Skip to content

Instantly share code, notes, and snippets.

@timotheecour
Created January 29, 2021 05:11
Show Gist options
  • Save timotheecour/882d897733d03854fbb427fa1fd70b79 to your computer and use it in GitHub Desktop.
Save timotheecour/882d897733d03854fbb427fa1fd70b79 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- This file is generated by Nim. -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 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=">
<!-- 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'/>
<!-- CSS -->
<title>system</title>
<link rel="stylesheet" type="text/css" href="nimdoc.out.css">
<script type="text/javascript" src="dochack.js"></script>
<script type="text/javascript">
function main() {
var pragmaDots = document.getElementsByClassName("pragmadots");
for (var i = 0; i < pragmaDots.length; i++) {
pragmaDots[i].onclick = function(event) {
// Hide tease
event.target.parentNode.style.display = "none";
// Show actual
event.target.parentNode.nextElementSibling.style.display = "inline";
}
}
const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
function switchTheme(e) {
if (e.target.checked) {
document.documentElement.setAttribute('data-theme', 'dark');
localStorage.setItem('theme', 'dark');
} else {
document.documentElement.setAttribute('data-theme', 'light');
localStorage.setItem('theme', 'light');
}
}
toggleSwitch.addEventListener('change', switchTheme, false);
const currentTheme = localStorage.getItem('theme') ? localStorage.getItem('theme') : null;
if (currentTheme) {
document.documentElement.setAttribute('data-theme', currentTheme);
if (currentTheme === 'dark') {
toggleSwitch.checked = true;
}
}
}
window.addEventListener('DOMContentLoaded', main);
</script>
</head>
<body>
<div class="document" id="documentId">
<div class="container">
<h1 class="title">system</h1>
<div class="row">
<div class="three columns">
<div class="theme-switch-wrapper">
<label class="theme-switch" for="checkbox">
<input type="checkbox" id="checkbox" />
<div class="slider round"></div>
</label>
&nbsp;&nbsp;&nbsp; <em>Dark Mode</em>
</div>
<div id="global-links">
<ul class="simple">
<li>
<a href="theindex.html">Index</a>
</li>
</ul>
</div>
<div id="searchInputDiv">
Search: <input type="text" id="searchInput"
onkeyup="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" id="system-module_toc" href="#system-module">System module</a></li>
<ul class="simple"><li><a class="reference" id="system-module-strings-and-characters_toc" href="#system-module-strings-and-characters">Strings and characters</a></li>
<li><a class="reference" id="system-module-seqs_toc" href="#system-module-seqs">Seqs</a></li>
<li><a class="reference" id="system-module-sets_toc" href="#system-module-sets">Sets</a></li>
<li><a class="reference" id="system-module-numbers_toc" href="#system-module-numbers">Numbers</a></li>
<li><a class="reference" id="system-module-ordinals_toc" href="#system-module-ordinals">Ordinals</a></li>
<li><a class="reference" id="system-module-misc_toc" href="#system-module-misc">Misc</a></li>
</ul><li>
<a class="reference reference-toplevel" href="#6" id="56">Imports</a>
<ul class="simple simple-toc-section">
</ul>
</li>
<li>
<a class="reference reference-toplevel" href="#7" id="57">Types</a>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#float"
title="float {.magic: Float.}">float</a></li>
<li><a class="reference" href="#float32"
title="float32 {.magic: Float32.}">float32</a></li>
<li><a class="reference" href="#float64"
title="float64 {.magic: Float.}">float64</a></li>
<li><a class="reference" href="#char"
title="char {.magic: Char.}">char</a></li>
<li><a class="reference" href="#string"
title="string {.magic: String.}">string</a></li>
<li><a class="reference" href="#cstring"
title="cstring {.magic: Cstring.}">cstring</a></li>
<li><a class="reference" href="#pointer"
title="pointer {.magic: Pointer.}">pointer</a></li>
<li><a class="reference" href="#typedesc"
title="typedesc {.magic: TypeDesc.}">typedesc</a></li>
<li><a class="reference" href="#ptr"
title="ptr[T] {.magic: Pointer.}">`ptr`</a></li>
<li><a class="reference" href="#ref"
title="ref[T] {.magic: Pointer.}">`ref`</a></li>
<li><a class="reference" href="#void"
title="void {.magic: &quot;VoidType&quot;.}">void</a></li>
<li><a class="reference" href="#auto"
title="auto {.magic: Expr.}">auto</a></li>
<li><a class="reference" href="#any"
title="any = distinct auto">any</a></li>
<li><a class="reference" href="#untyped"
title="untyped {.magic: Expr.}">untyped</a></li>
<li><a class="reference" href="#typed"
title="typed {.magic: Stmt.}">typed</a></li>
<li><a class="reference" href="#int"
title="int {.magic: &quot;Int&quot;.}">int</a></li>
<li><a class="reference" href="#int8"
title="int8 {.magic: &quot;Int8&quot;.}">int8</a></li>
<li><a class="reference" href="#int16"
title="int16 {.magic: &quot;Int16&quot;.}">int16</a></li>
<li><a class="reference" href="#int32"
title="int32 {.magic: &quot;Int32&quot;.}">int32</a></li>
<li><a class="reference" href="#int64"
title="int64 {.magic: &quot;Int64&quot;.}">int64</a></li>
<li><a class="reference" href="#uint"
title="uint {.magic: &quot;UInt&quot;.}">uint</a></li>
<li><a class="reference" href="#uint8"
title="uint8 {.magic: &quot;UInt8&quot;.}">uint8</a></li>
<li><a class="reference" href="#uint16"
title="uint16 {.magic: &quot;UInt16&quot;.}">uint16</a></li>
<li><a class="reference" href="#uint32"
title="uint32 {.magic: &quot;UInt32&quot;.}">uint32</a></li>
<li><a class="reference" href="#uint64"
title="uint64 {.magic: &quot;UInt64&quot;.}">uint64</a></li>
<li><a class="reference" href="#bool"
title="bool {.magic: &quot;Bool&quot;.} = enum
false = 0, true = 1">bool</a></li>
<li><a class="reference" href="#SomeSignedInt"
title="SomeSignedInt = int | int8 | int16 | int32 | int64">SomeSignedInt</a></li>
<li><a class="reference" href="#SomeUnsignedInt"
title="SomeUnsignedInt = uint | uint8 | uint16 | uint32 | uint64">SomeUnsignedInt</a></li>
<li><a class="reference" href="#SomeInteger"
title="SomeInteger = SomeSignedInt | SomeUnsignedInt">SomeInteger</a></li>
<li><a class="reference" href="#SomeOrdinal"
title="SomeOrdinal = int | int8 | int16 | int32 | int64 | bool | enum | uint | uint8 |
uint16 |
uint32 |
uint64">SomeOrdinal</a></li>
<li><a class="reference" href="#BiggestInt"
title="BiggestInt = int64">BiggestInt</a></li>
<li><a class="reference" href="#SomeFloat"
title="SomeFloat = float | float32 | float64">SomeFloat</a></li>
<li><a class="reference" href="#SomeNumber"
title="SomeNumber = SomeInteger | SomeFloat">SomeNumber</a></li>
<li><a class="reference" href="#Ordinal"
title="Ordinal[T] {.magic: Ordinal.}">Ordinal</a></li>
<li><a class="reference" href="#static"
title="static[T] {.magic: &quot;Static&quot;.}">`static`</a></li>
<li><a class="reference" href="#type"
title="type[T] {.magic: &quot;Type&quot;.}">`type`</a></li>
<li><a class="reference" href="#TypeOfMode"
title="TypeOfMode = enum
typeOfProc, ## Prefer the interpretation that means `x` is a proc call.
typeOfIter ## Prefer the interpretation that means `x` is an iterator call.">TypeOfMode</a></li>
<li><a class="reference" href="#range"
title="range[T] {.magic: &quot;Range&quot;.}">range</a></li>
<li><a class="reference" href="#array"
title="array[I; T] {.magic: &quot;Array&quot;.}">array</a></li>
<li><a class="reference" href="#openArray"
title="openArray[T] {.magic: &quot;OpenArray&quot;.}">openArray</a></li>
<li><a class="reference" href="#varargs"
title="varargs[T] {.magic: &quot;Varargs&quot;.}">varargs</a></li>
<li><a class="reference" href="#seq"
title="seq[T] {.magic: &quot;Seq&quot;.}">seq</a></li>
<li><a class="reference" href="#set"
title="set[T] {.magic: &quot;Set&quot;.}">set</a></li>
<li><a class="reference" href="#UncheckedArray"
title="UncheckedArray[T] {.magic: &quot;UncheckedArray&quot;.}">UncheckedArray</a></li>
<li><a class="reference" href="#sink"
title="sink[T] {.magic: &quot;BuiltinType&quot;.}">sink</a></li>
<li><a class="reference" href="#lent"
title="lent[T] {.magic: &quot;BuiltinType&quot;.}">lent</a></li>
<li><a class="reference" href="#HSlice"
title="HSlice[T; U] = object
a*: T ## The lower bound (inclusive).
b*: U ## The upper bound (inclusive).">HSlice</a></li>
<li><a class="reference" href="#Slice"
title="Slice[T] = HSlice[T, T]">Slice</a></li>
<li><a class="reference" href="#byte"
title="byte = uint8">byte</a></li>
<li><a class="reference" href="#Natural"
title="Natural = range[0 .. high(int)]">Natural</a></li>
<li><a class="reference" href="#Positive"
title="Positive = range[1 .. high(int)]">Positive</a></li>
<li><a class="reference" href="#RootObj"
title="RootObj {.compilerproc, inheritable.} = object">RootObj</a></li>
<li><a class="reference" href="#RootRef"
title="RootRef = ref RootObj">RootRef</a></li>
<li><a class="reference" href="#RootEffect"
title="RootEffect {.compilerproc.} = object of RootObj">RootEffect</a></li>
<li><a class="reference" href="#TimeEffect"
title="TimeEffect = object of RootEffect">TimeEffect</a></li>
<li><a class="reference" href="#IOEffect"
title="IOEffect = object of RootEffect">IOEffect</a></li>
<li><a class="reference" href="#ReadIOEffect"
title="ReadIOEffect = object of IOEffect">ReadIOEffect</a></li>
<li><a class="reference" href="#WriteIOEffect"
title="WriteIOEffect = object of IOEffect">WriteIOEffect</a></li>
<li><a class="reference" href="#ExecIOEffect"
title="ExecIOEffect = object of IOEffect">ExecIOEffect</a></li>
<li><a class="reference" href="#StackTraceEntry"
title="StackTraceEntry = object
procname*: cstring ## Name of the proc that is currently executing.
line*: int ## Line number of the proc that is currently executing.
filename*: cstring ## Filename of the proc that is currently executing.
when NimStackTraceMsgs:
frameMsg*: string ## When a stacktrace is generated in a given frame and
## rendered at a later time, we should ensure the stacktrace
## data isn&apos;t invalidated; any pointer into PFrame is
## subject to being invalidated so shouldn&apos;t be stored.
when defined(nimStackTraceOverride):
programCounter*: uint ## Program counter - will be used to get the rest of the info,
## when `$` is called on this type. We can&apos;t use
## &quot;cuintptr_t&quot; in here.
procnameStr*, filenameStr*: string ## GC-ed objects holding the cstrings in &quot;procname&quot; and &quot;filename&quot;">StackTraceEntry</a></li>
<li><a class="reference" href="#Exception"
title="Exception {.compilerproc, magic: &quot;Exception&quot;.} = object of RootObj
parent*: ref Exception ## Parent exception (can be used as a stack).
name*: cstring ## The exception&apos;s name is its Nim identifier.
## This field is filled automatically in the
## ``raise`` statement.
msg* {.exportc: &quot;message&quot;.}: string ## The exception&apos;s message. Not
## providing an exception message
## is bad style.
when defined(js):
trace: string
else:
trace: seq[StackTraceEntry]
up: ref Exception">Exception</a></li>
<li><a class="reference" href="#Defect"
title="Defect = object of Exception">Defect</a></li>
<li><a class="reference" href="#CatchableError"
title="CatchableError = object of Exception">CatchableError</a></li>
<li><a class="reference" href="#IOError"
title="IOError = object of CatchableError">IOError</a></li>
<li><a class="reference" href="#EOFError"
title="EOFError = object of IOError">EOFError</a></li>
<li><a class="reference" href="#OSError"
title="OSError = object of CatchableError
errorCode*: int32 ## OS-defined error code describing this error.">OSError</a></li>
<li><a class="reference" href="#LibraryError"
title="LibraryError = object of OSError">LibraryError</a></li>
<li><a class="reference" href="#ResourceExhaustedError"
title="ResourceExhaustedError = object of CatchableError">ResourceExhaustedError</a></li>
<li><a class="reference" href="#ArithmeticDefect"
title="ArithmeticDefect = object of Defect">ArithmeticDefect</a></li>
<li><a class="reference" href="#DivByZeroDefect"
title="DivByZeroDefect = object of ArithmeticDefect">DivByZeroDefect</a></li>
<li><a class="reference" href="#OverflowDefect"
title="OverflowDefect = object of ArithmeticDefect">OverflowDefect</a></li>
<li><a class="reference" href="#AccessViolationDefect"
title="AccessViolationDefect = object of Defect">AccessViolationDefect</a></li>
<li><a class="reference" href="#AssertionDefect"
title="AssertionDefect = object of Defect">AssertionDefect</a></li>
<li><a class="reference" href="#ValueError"
title="ValueError = object of CatchableError">ValueError</a></li>
<li><a class="reference" href="#KeyError"
title="KeyError = object of ValueError">KeyError</a></li>
<li><a class="reference" href="#OutOfMemDefect"
title="OutOfMemDefect = object of Defect">OutOfMemDefect</a></li>
<li><a class="reference" href="#IndexDefect"
title="IndexDefect = object of Defect">IndexDefect</a></li>
<li><a class="reference" href="#FieldDefect"
title="FieldDefect = object of Defect">FieldDefect</a></li>
<li><a class="reference" href="#RangeDefect"
title="RangeDefect = object of Defect">RangeDefect</a></li>
<li><a class="reference" href="#StackOverflowDefect"
title="StackOverflowDefect = object of Defect">StackOverflowDefect</a></li>
<li><a class="reference" href="#ReraiseDefect"
title="ReraiseDefect = object of Defect">ReraiseDefect</a></li>
<li><a class="reference" href="#ObjectAssignmentDefect"
title="ObjectAssignmentDefect = object of Defect">ObjectAssignmentDefect</a></li>
<li><a class="reference" href="#ObjectConversionDefect"
title="ObjectConversionDefect = object of Defect">ObjectConversionDefect</a></li>
<li><a class="reference" href="#FloatingPointDefect"
title="FloatingPointDefect = object of Defect">FloatingPointDefect</a></li>
<li><a class="reference" href="#FloatInvalidOpDefect"
title="FloatInvalidOpDefect = object of FloatingPointDefect">FloatInvalidOpDefect</a></li>
<li><a class="reference" href="#FloatDivByZeroDefect"
title="FloatDivByZeroDefect = object of FloatingPointDefect">FloatDivByZeroDefect</a></li>
<li><a class="reference" href="#FloatOverflowDefect"
title="FloatOverflowDefect = object of FloatingPointDefect">FloatOverflowDefect</a></li>
<li><a class="reference" href="#FloatUnderflowDefect"
title="FloatUnderflowDefect = object of FloatingPointDefect">FloatUnderflowDefect</a></li>
<li><a class="reference" href="#FloatInexactDefect"
title="FloatInexactDefect = object of FloatingPointDefect">FloatInexactDefect</a></li>
<li><a class="reference" href="#DeadThreadDefect"
title="DeadThreadDefect = object of Defect">DeadThreadDefect</a></li>
<li><a class="reference" href="#NilAccessDefect"
title="NilAccessDefect = object of Defect">NilAccessDefect</a></li>
<li><a class="reference" href="#ArithmeticError"
title="ArithmeticError {.deprecated: &quot;See corresponding Defect&quot;.} = ArithmeticDefect">ArithmeticError</a></li>
<li><a class="reference" href="#DivByZeroError"
title="DivByZeroError {.deprecated: &quot;See corresponding Defect&quot;.} = DivByZeroDefect">DivByZeroError</a></li>
<li><a class="reference" href="#OverflowError"
title="OverflowError {.deprecated: &quot;See corresponding Defect&quot;.} = OverflowDefect">OverflowError</a></li>
<li><a class="reference" href="#AccessViolationError"
title="AccessViolationError {.deprecated: &quot;See corresponding Defect&quot;.} = AccessViolationDefect">AccessViolationError</a></li>
<li><a class="reference" href="#AssertionError"
title="AssertionError {.deprecated: &quot;See corresponding Defect&quot;.} = AssertionDefect">AssertionError</a></li>
<li><a class="reference" href="#OutOfMemError"
title="OutOfMemError {.deprecated: &quot;See corresponding Defect&quot;.} = OutOfMemDefect">OutOfMemError</a></li>
<li><a class="reference" href="#IndexError"
title="IndexError {.deprecated: &quot;See corresponding Defect&quot;.} = IndexDefect">IndexError</a></li>
<li><a class="reference" href="#FieldError"
title="FieldError {.deprecated: &quot;See corresponding Defect&quot;.} = FieldDefect">FieldError</a></li>
<li><a class="reference" href="#RangeError"
title="RangeError {.deprecated: &quot;See corresponding Defect&quot;.} = RangeDefect">RangeError</a></li>
<li><a class="reference" href="#StackOverflowError"
title="StackOverflowError {.deprecated: &quot;See corresponding Defect&quot;.} = StackOverflowDefect">StackOverflowError</a></li>
<li><a class="reference" href="#ReraiseError"
title="ReraiseError {.deprecated: &quot;See corresponding Defect&quot;.} = ReraiseDefect">ReraiseError</a></li>
<li><a class="reference" href="#ObjectAssignmentError"
title="ObjectAssignmentError {.deprecated: &quot;See corresponding Defect&quot;.} = ObjectAssignmentDefect">ObjectAssignmentError</a></li>
<li><a class="reference" href="#ObjectConversionError"
title="ObjectConversionError {.deprecated: &quot;See corresponding Defect&quot;.} = ObjectConversionDefect">ObjectConversionError</a></li>
<li><a class="reference" href="#FloatingPointError"
title="FloatingPointError {.deprecated: &quot;See corresponding Defect&quot;.} = FloatingPointDefect">FloatingPointError</a></li>
<li><a class="reference" href="#FloatInvalidOpError"
title="FloatInvalidOpError {.deprecated: &quot;See corresponding Defect&quot;.} = FloatInvalidOpDefect">FloatInvalidOpError</a></li>
<li><a class="reference" href="#FloatDivByZeroError"
title="FloatDivByZeroError {.deprecated: &quot;See corresponding Defect&quot;.} = FloatDivByZeroDefect">FloatDivByZeroError</a></li>
<li><a class="reference" href="#FloatOverflowError"
title="FloatOverflowError {.deprecated: &quot;See corresponding Defect&quot;.} = FloatOverflowDefect">FloatOverflowError</a></li>
<li><a class="reference" href="#FloatUnderflowError"
title="FloatUnderflowError {.deprecated: &quot;See corresponding Defect&quot;.} = FloatUnderflowDefect">FloatUnderflowError</a></li>
<li><a class="reference" href="#FloatInexactError"
title="FloatInexactError {.deprecated: &quot;See corresponding Defect&quot;.} = FloatInexactDefect">FloatInexactError</a></li>
<li><a class="reference" href="#DeadThreadError"
title="DeadThreadError {.deprecated: &quot;See corresponding Defect&quot;.} = DeadThreadDefect">DeadThreadError</a></li>
<li><a class="reference" href="#NilAccessError"
title="NilAccessError {.deprecated: &quot;See corresponding Defect&quot;.} = NilAccessDefect">NilAccessError</a></li>
<li><a class="reference" href="#JsRoot"
title="JsRoot = ref object of RootObj">JsRoot</a></li>
<li><a class="reference" href="#owned"
title="owned[T] {.magic: &quot;BuiltinType&quot;.}">owned</a></li>
<li><a class="reference" href="#Endianness"
title="Endianness = enum
littleEndian, bigEndian">Endianness</a></li>
<li><a class="reference" href="#TaintedString"
title="TaintedString {.deprecated: &quot;Deprecated since 1.5&quot;.} = string">TaintedString</a></li>
<li><a class="reference" href="#ByteAddress"
title="ByteAddress = int">ByteAddress</a></li>
<li><a class="reference" href="#BiggestFloat"
title="BiggestFloat = float64">BiggestFloat</a></li>
<li><a class="reference" href="#BiggestUInt"
title="BiggestUInt = uint64">BiggestUInt</a></li>
<li><a class="reference" href="#clong"
title="clong {.importc: &quot;long&quot;, nodecl.} = int">clong</a></li>
<li><a class="reference" href="#culong"
title="culong {.importc: &quot;unsigned long&quot;, nodecl.} = uint">culong</a></li>
<li><a class="reference" href="#cchar"
title="cchar {.importc: &quot;char&quot;, nodecl.} = char">cchar</a></li>
<li><a class="reference" href="#cschar"
title="cschar {.importc: &quot;signed char&quot;, nodecl.} = int8">cschar</a></li>
<li><a class="reference" href="#cshort"
title="cshort {.importc: &quot;short&quot;, nodecl.} = int16">cshort</a></li>
<li><a class="reference" href="#cint"
title="cint {.importc: &quot;int&quot;, nodecl.} = int32">cint</a></li>
<li><a class="reference" href="#csize"
title="csize {.importc: &quot;size_t&quot;, nodecl, deprecated: &quot;use `csize_t` instead&quot;.} = int">csize</a></li>
<li><a class="reference" href="#csize_t"
title="csize_t {.importc: &quot;size_t&quot;, nodecl.} = uint">csize_t</a></li>
<li><a class="reference" href="#clonglong"
title="clonglong {.importc: &quot;long long&quot;, nodecl.} = int64">clonglong</a></li>
<li><a class="reference" href="#cfloat"
title="cfloat {.importc: &quot;float&quot;, nodecl.} = float32">cfloat</a></li>
<li><a class="reference" href="#cdouble"
title="cdouble {.importc: &quot;double&quot;, nodecl.} = float64">cdouble</a></li>
<li><a class="reference" href="#clongdouble"
title="clongdouble {.importc: &quot;long double&quot;, nodecl.} = BiggestFloat">clongdouble</a></li>
<li><a class="reference" href="#cuchar"
title="cuchar {.importc: &quot;unsigned char&quot;, nodecl.} = char">cuchar</a></li>
<li><a class="reference" href="#cushort"
title="cushort {.importc: &quot;unsigned short&quot;, nodecl.} = uint16">cushort</a></li>
<li><a class="reference" href="#cuint"
title="cuint {.importc: &quot;unsigned int&quot;, nodecl.} = uint32">cuint</a></li>
<li><a class="reference" href="#culonglong"
title="culonglong {.importc: &quot;unsigned long long&quot;, nodecl.} = uint64">culonglong</a></li>
<li><a class="reference" href="#cstringArray"
title="cstringArray {.importc: &quot;char**&quot;, nodecl.} = ptr UncheckedArray[cstring]">cstringArray</a></li>
<li><a class="reference" href="#PFloat32"
title="PFloat32 = ptr float32">PFloat32</a></li>
<li><a class="reference" href="#PFloat64"
title="PFloat64 = ptr float64">PFloat64</a></li>
<li><a class="reference" href="#PInt64"
title="PInt64 = ptr int64">PInt64</a></li>
<li><a class="reference" href="#PInt32"
title="PInt32 = ptr int32">PInt32</a></li>
<li><a class="reference" href="#AllocStats"
title="AllocStats = object
allocCount: int
deallocCount: int">AllocStats</a></li>
<li><a class="reference" href="#AtomType"
title="AtomType = SomeNumber | pointer | ptr | char | bool">AtomType</a></li>
<li><a class="reference" href="#GC_Strategy"
title="GC_Strategy = enum
gcThroughput, ## optimize for throughput
gcResponsiveness, ## optimize for responsiveness (default)
gcOptimizeTime, ## optimize for speed
gcOptimizeSpace ## optimize for memory footprint">GC_Strategy</a></li>
<li><a class="reference" href="#PFrame"
title="PFrame = ptr TFrame">PFrame</a></li>
<li><a class="reference" href="#TFrame"
title="TFrame {.importc, nodecl, final.} = object
prev*: PFrame ## Previous frame; used for chaining the call stack.
procname*: cstring ## Name of the proc that is currently executing.
line*: int ## Line number of the proc that is currently executing.
filename*: cstring ## Filename of the proc that is currently executing.
len*: int16 ## Length of the inspectable slots.
calldepth*: int16 ## Used for max call depth checking.
when NimStackTraceMsgs:
frameMsgLen*: int ## end position in frameMsgBuf for this frame.">TFrame</a></li>
<li><a class="reference" href="#FileSeekPos"
title="FileSeekPos = enum
fspSet, ## Seek to absolute value
fspCur, ## Seek relative to current position
fspEnd ## Seek relative to end">FileSeekPos</a></li>
<li><a class="reference" href="#ForeignCell"
title="ForeignCell = object
data*: pointer
owner: ptr GcHeap">ForeignCell</a></li>
<li><a class="reference" href="#BackwardsIndex"
title="BackwardsIndex = distinct int">BackwardsIndex</a></li>
<li><a class="reference" href="#NimNode"
title="NimNode {.magic: &quot;PNimrodNode&quot;.} = ref NimNodeObj">NimNode</a></li>
<li><a class="reference" href="#ForLoopStmt"
title="ForLoopStmt {.compilerproc.} = object">ForLoopStmt</a></li>
</ul>
</li>
<li>
<a class="reference reference-toplevel" href="#8" id="58">Vars</a>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#programResult"
title="programResult: int">programResult</a></li>
<li><a class="reference" href="#globalRaiseHook"
title="globalRaiseHook: proc (e: ref Exception): bool {.nimcall, gcsafe, locks: 0.}">globalRaiseHook</a></li>
<li><a class="reference" href="#localRaiseHook"
title="localRaiseHook: proc (e: ref Exception): bool {.nimcall, gcsafe, locks: 0.}">localRaiseHook</a></li>
<li><a class="reference" href="#outOfMemHook"
title="outOfMemHook: proc () {.nimcall, tags: [], gcsafe, locks: 0, raises: [].}">outOfMemHook</a></li>
<li><a class="reference" href="#unhandledExceptionHook"
title="unhandledExceptionHook: proc (e: ref Exception) {.nimcall, tags: [], gcsafe,
locks: 0, raises: [].}">unhandledExceptionHook</a></li>
<li><a class="reference" href="#errorMessageWriter"
title="errorMessageWriter: (proc (msg: string) {.tags: [WriteIOEffect], gcsafe,
locks: 0, nimcall.})">errorMessageWriter</a></li>
<li><a class="reference" href="#frameMsgBuf"
title="frameMsgBuf: string">frameMsgBuf</a></li>
<li><a class="reference" href="#onUnhandledException"
title="onUnhandledException: (proc (errorMsg: string) {.nimcall, gcsafe.})">onUnhandledException</a></li>
</ul>
</li>
<li>
<a class="reference reference-toplevel" href="#9" id="59">Lets</a>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#nimvm"
title="nimvm: bool = false">nimvm</a></li>
</ul>
</li>
<li>
<a class="reference reference-toplevel" href="#10" id="60">Consts</a>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#on"
title="on = true">on</a></li>
<li><a class="reference" href="#off"
title="off = false">off</a></li>
<li><a class="reference" href="#appType"
title="appType: string = &quot;&quot;">appType</a></li>
<li><a class="reference" href="#NoFakeVars"
title="NoFakeVars = false">NoFakeVars</a></li>
<li><a class="reference" href="#isMainModule"
title="isMainModule: bool = false">isMainModule</a></li>
<li><a class="reference" href="#CompileDate"
title="CompileDate: string = &quot;0000-00-00&quot;">CompileDate</a></li>
<li><a class="reference" href="#CompileTime"
title="CompileTime: string = &quot;00:00:00&quot;">CompileTime</a></li>
<li><a class="reference" href="#cpuEndian"
title="cpuEndian: Endianness = littleEndian">cpuEndian</a></li>
<li><a class="reference" href="#hostOS"
title="hostOS: string = &quot;&quot;">hostOS</a></li>
<li><a class="reference" href="#hostCPU"
title="hostCPU: string = &quot;&quot;">hostCPU</a></li>
<li><a class="reference" href="#nimEnableCovariance"
title="nimEnableCovariance = false">nimEnableCovariance</a></li>
<li><a class="reference" href="#QuitSuccess"
title="QuitSuccess = 0">QuitSuccess</a></li>
<li><a class="reference" href="#QuitFailure"
title="QuitFailure = 1">QuitFailure</a></li>
<li><a class="reference" href="#Inf"
title="Inf = 0x7FF0000000000000&apos;f64">Inf</a></li>
<li><a class="reference" href="#NegInf"
title="NegInf = 0xFFF0000000000000&apos;f64">NegInf</a></li>
<li><a class="reference" href="#NaN"
title="NaN = 0x7FF7FFFFFFFFFFFF&apos;f64">NaN</a></li>
<li><a class="reference" href="#nimCoroutines"
title="nimCoroutines = false">nimCoroutines</a></li>
<li><a class="reference" href="#NimMajor"
title="NimMajor: int = 1">NimMajor</a></li>
<li><a class="reference" href="#NimMinor"
title="NimMinor: int = 5">NimMinor</a></li>
<li><a class="reference" href="#NimPatch"
title="NimPatch: int = 1">NimPatch</a></li>
<li><a class="reference" href="#NimVersion"
title="NimVersion: string = &quot;1.5.1&quot;">NimVersion</a></li>
<li><a class="reference" href="#nativeStackTraceSupported"
title="nativeStackTraceSupported = false">nativeStackTraceSupported</a></li>
</ul>
</li>
<li>
<a class="reference reference-toplevel" href="#12" id="62">Procs</a>
<ul class="simple simple-toc-section">
<ul class="simple nested-toc-section">pop
<li><a class="reference" href="#pop%2Cseq%5BT%5D"
title="pop[T](s: var seq[T]): T">pop[T](s: var seq[T]): T</a></li>
</ul>
<ul class="simple nested-toc-section">deallocImpl
<li><a class="reference" href="#deallocImpl%2Cpointer"
title="deallocImpl(p: pointer)">deallocImpl(p: pointer)</a></li>
</ul>
<ul class="simple nested-toc-section">clamp
<li><a class="reference" href="#clamp%2CT%2CT%2CT"
title="clamp[T](x, a, b: T): T">clamp[T](x, a, b: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">quit
<li><a class="reference" href="#quit%2Cint"
title="quit(errorcode: int = QuitSuccess)">quit(errorcode: int = QuitSuccess)</a></li>
<li><a class="reference" href="#quit%2Cstring"
title="quit(errormsg: string; errorcode = QuitFailure)">quit(errormsg: string; errorcode = QuitFailure)</a></li>
</ul>
<ul class="simple nested-toc-section">del
<li><a class="reference" href="#del%2Cseq%5BT%5D%2CNatural"
title="del[T](x: var seq[T]; i: Natural)">del[T](x: var seq[T]; i: Natural)</a></li>
</ul>
<ul class="simple nested-toc-section">moveMem
<li><a class="reference" href="#moveMem%2Cpointer%2Cpointer%2CNatural"
title="moveMem(dest, source: pointer; size: Natural)">moveMem(dest, source: pointer; size: Natural)</a></li>
</ul>
<ul class="simple nested-toc-section">compiles
<li><a class="reference" href="#compiles%2Cuntyped"
title="compiles(x: untyped): bool">compiles(x: untyped): bool</a></li>
</ul>
<ul class="simple nested-toc-section">declared
<li><a class="reference" href="#declared%2Cuntyped"
title="declared(x: untyped): bool">declared(x: untyped): bool</a></li>
</ul>
<ul class="simple nested-toc-section">reallocSharedImpl
<li><a class="reference" href="#reallocSharedImpl%2Cpointer%2CNatural"
title="reallocSharedImpl(p: pointer; newSize: Natural): pointer">reallocSharedImpl(p: pointer; newSize: Natural): pointer</a></li>
</ul>
<ul class="simple nested-toc-section">move
<li><a class="reference" href="#move%2CT"
title="move[T](x: var T): T">move[T](x: var T): T</a></li>
</ul>
<ul class="simple nested-toc-section">chr
<li><a class="reference" href="#chr%2Crange%5B%5D"
title="chr(u: range[0 .. 255]): char">chr(u: range[0 .. 255]): char</a></li>
</ul>
<ul class="simple nested-toc-section">deepCopy
<li><a class="reference" href="#deepCopy%2CT%2CT"
title="deepCopy[T](x: var T; y: T)">deepCopy[T](x: var T; y: T)</a></li>
<li><a class="reference" href="#deepCopy%2CT"
title="deepCopy[T](y: T): T">deepCopy[T](y: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">addr
<li><a class="reference" href="#addr%2CT"
title="`addr`[T](x: var T): ptr T">`addr`[T](x: var T): ptr T</a></li>
</ul>
<ul class="simple nested-toc-section">alloc0Impl
<li><a class="reference" href="#alloc0Impl%2CNatural"
title="alloc0Impl(size: Natural): pointer">alloc0Impl(size: Natural): pointer</a></li>
</ul>
<ul class="simple nested-toc-section">*
<li><a class="reference" href="#%2A%2Cint%2Cint"
title="`*`(x, y: int): int">`*`(x, y: int): int</a></li>
<li><a class="reference" href="#%2A%2Cint8%2Cint8"
title="`*`(x, y: int8): int8">`*`(x, y: int8): int8</a></li>
<li><a class="reference" href="#%2A%2Cint16%2Cint16"
title="`*`(x, y: int16): int16">`*`(x, y: int16): int16</a></li>
<li><a class="reference" href="#%2A%2Cint32%2Cint32"
title="`*`(x, y: int32): int32">`*`(x, y: int32): int32</a></li>
<li><a class="reference" href="#%2A%2Cint64%2Cint64"
title="`*`(x, y: int64): int64">`*`(x, y: int64): int64</a></li>
<li><a class="reference" href="#%2A%2Cuint%2Cuint"
title="`*`(x, y: uint): uint">`*`(x, y: uint): uint</a></li>
<li><a class="reference" href="#%2A%2Cuint8%2Cuint8"
title="`*`(x, y: uint8): uint8">`*`(x, y: uint8): uint8</a></li>
<li><a class="reference" href="#%2A%2Cuint16%2Cuint16"
title="`*`(x, y: uint16): uint16">`*`(x, y: uint16): uint16</a></li>
<li><a class="reference" href="#%2A%2Cuint32%2Cuint32"
title="`*`(x, y: uint32): uint32">`*`(x, y: uint32): uint32</a></li>
<li><a class="reference" href="#%2A%2Cuint64%2Cuint64"
title="`*`(x, y: uint64): uint64">`*`(x, y: uint64): uint64</a></li>
<li><a class="reference" href="#%2A%2Cfloat32%2Cfloat32"
title="`*`(x, y: float32): float32">`*`(x, y: float32): float32</a></li>
<li><a class="reference" href="#%2A%2Cfloat%2Cfloat"
title="`*`(x, y: float): float">`*`(x, y: float): float</a></li>
<li><a class="reference" href="#%2A%2Cset%5BT%5D%2Cset%5BT%5D"
title="`*`[T](x, y: set[T]): set[T]">`*`[T](x, y: set[T]): set[T]</a></li>
</ul>
<ul class="simple nested-toc-section">protect
<li><a class="reference" href="#protect%2Cpointer"
title="protect(x: pointer): ForeignCell">protect(x: pointer): ForeignCell</a></li>
</ul>
<ul class="simple nested-toc-section">-=
<li><a class="reference" href="#-%3D%2CT%2CT"
title="`-=`[T: SomeInteger](x: var T; y: T)">`-=`[T: SomeInteger](x: var T; y: T)</a></li>
<li><a class="reference" href="#-%3D%2CT%2CT_2"
title="`-=`[T: float | float32 | float64](x: var T; y: T)">`-=`[T: float | float32 | float64](x: var T; y: T)</a></li>
</ul>
<ul class="simple nested-toc-section">cstringArrayToSeq
<li><a class="reference" href="#cstringArrayToSeq%2CcstringArray%2CNatural"
title="cstringArrayToSeq(a: cstringArray; len: Natural): seq[string]">cstringArrayToSeq(a: cstringArray; len: Natural): seq[string]</a></li>
<li><a class="reference" href="#cstringArrayToSeq%2CcstringArray"
title="cstringArrayToSeq(a: cstringArray): seq[string]">cstringArrayToSeq(a: cstringArray): seq[string]</a></li>
</ul>
<ul class="simple nested-toc-section">deallocHeap
<li><a class="reference" href="#deallocHeap"
title="deallocHeap(runFinalizers = true; allowGcAfterwards = true)">deallocHeap(runFinalizers = true; allowGcAfterwards = true)</a></li>
</ul>
<ul class="simple nested-toc-section">toU16
<li><a class="reference" href="#toU16%2Cint"
title="toU16(x: int): int16">toU16(x: int): int16</a></li>
</ul>
<ul class="simple nested-toc-section">toOpenArrayByte
<li><a class="reference" href="#toOpenArrayByte%2Ccstring%2Cint%2Cint"
title="toOpenArrayByte(x: cstring; first, last: int): openArray[byte]">toOpenArrayByte(x: cstring; first, last: int): openArray[byte]</a></li>
<li><a class="reference" href="#toOpenArrayByte%2Cstring%2Cint%2Cint"
title="toOpenArrayByte(x: string; first, last: int): openArray[byte]">toOpenArrayByte(x: string; first, last: int): openArray[byte]</a></li>
<li><a class="reference" href="#toOpenArrayByte%2CopenArray%5Bchar%5D%2Cint%2Cint"
title="toOpenArrayByte(x: openArray[char]; first, last: int): openArray[byte]">toOpenArrayByte(x: openArray[char]; first, last: int): openArray[byte]</a></li>
<li><a class="reference" href="#toOpenArrayByte%2Cseq%5Bchar%5D%2Cint%2Cint"
title="toOpenArrayByte(x: seq[char]; first, last: int): openArray[byte]">toOpenArrayByte(x: seq[char]; first, last: int): openArray[byte]</a></li>
</ul>
<ul class="simple nested-toc-section">newStringOfCap
<li><a class="reference" href="#newStringOfCap%2CNatural"
title="newStringOfCap(cap: Natural): string">newStringOfCap(cap: Natural): string</a></li>
</ul>
<ul class="simple nested-toc-section">=sink
<li><a class="reference" href="#%3Dsink%2CT%2CT"
title="`=sink`[T](x: var T; y: T)">`=sink`[T](x: var T; y: T)</a></li>
</ul>
<ul class="simple nested-toc-section"><=
<li><a class="reference" href="#%3C%3D%2CEnum%2CEnum"
title="`&lt;=`[Enum: enum](x, y: Enum): bool">`&lt;=`[Enum: enum](x, y: Enum): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cstring%2Cstring"
title="`&lt;=`(x, y: string): bool">`&lt;=`(x, y: string): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cchar%2Cchar"
title="`&lt;=`(x, y: char): bool">`&lt;=`(x, y: char): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cset%5BT%5D%2Cset%5BT%5D"
title="`&lt;=`[T](x, y: set[T]): bool">`&lt;=`[T](x, y: set[T]): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cbool%2Cbool"
title="`&lt;=`(x, y: bool): bool">`&lt;=`(x, y: bool): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cref.T%2Cref.T"
title="`&lt;=`[T](x, y: ref T): bool">`&lt;=`[T](x, y: ref T): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cpointer%2Cpointer"
title="`&lt;=`(x, y: pointer): bool">`&lt;=`(x, y: pointer): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cint%2Cint"
title="`&lt;=`(x, y: int): bool">`&lt;=`(x, y: int): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cint8%2Cint8"
title="`&lt;=`(x, y: int8): bool">`&lt;=`(x, y: int8): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cint16%2Cint16"
title="`&lt;=`(x, y: int16): bool">`&lt;=`(x, y: int16): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cint32%2Cint32"
title="`&lt;=`(x, y: int32): bool">`&lt;=`(x, y: int32): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cint64%2Cint64"
title="`&lt;=`(x, y: int64): bool">`&lt;=`(x, y: int64): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cuint%2Cuint"
title="`&lt;=`(x, y: uint): bool">`&lt;=`(x, y: uint): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cuint8%2Cuint8"
title="`&lt;=`(x, y: uint8): bool">`&lt;=`(x, y: uint8): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cuint16%2Cuint16"
title="`&lt;=`(x, y: uint16): bool">`&lt;=`(x, y: uint16): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cuint32%2Cuint32"
title="`&lt;=`(x, y: uint32): bool">`&lt;=`(x, y: uint32): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cuint64%2Cuint64"
title="`&lt;=`(x, y: uint64): bool">`&lt;=`(x, y: uint64): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cfloat32%2Cfloat32"
title="`&lt;=`(x, y: float32): bool">`&lt;=`(x, y: float32): bool</a></li>
<li><a class="reference" href="#%3C%3D%2Cfloat%2Cfloat"
title="`&lt;=`(x, y: float): bool">`&lt;=`(x, y: float): bool</a></li>
<li><a class="reference" href="#%3C%3D%2CT%2CT"
title="`&lt;=`[T: tuple](x, y: T): bool">`&lt;=`[T: tuple](x, y: T): bool</a></li>
</ul>
<ul class="simple nested-toc-section">/
<li><a class="reference" href="#%2F%2Cfloat32%2Cfloat32"
title="`/`(x, y: float32): float32">`/`(x, y: float32): float32</a></li>
<li><a class="reference" href="#%2F%2Cfloat%2Cfloat"
title="`/`(x, y: float): float">`/`(x, y: float): float</a></li>
<li><a class="reference" href="#%2F%2Cint%2Cint"
title="`/`(x, y: int): float">`/`(x, y: int): float</a></li>
</ul>
<ul class="simple nested-toc-section">typeof
<li><a class="reference" href="#typeof%2Cuntyped"
title="typeof(x: untyped; mode = typeOfIter): typedesc">typeof(x: untyped; mode = typeOfIter): typedesc</a></li>
</ul>
<ul class="simple nested-toc-section">[]=
<li><a class="reference" href="#%5B%5D%3D%2CT%2CI%2CsinkS"
title="`[]=`[I: Ordinal; T, S](a: T; i: I; x: sink S)">`[]=`[I: Ordinal; T, S](a: T; i: I; x: sink S)</a></li>
<li><a class="reference" href="#%5B%5D%3D%2Cstring%2CHSlice%5BT%2CU%5D%2Cstring"
title="`[]=`[T, U](s: var string; x: HSlice[T, U]; b: string)">`[]=`[T, U](s: var string; x: HSlice[T, U]; b: string)</a></li>
<li><a class="reference" href="#%5B%5D%3D%2Carray%5BIdx%2CT%5D%2CHSlice%5BU%2CV%5D%2CopenArray%5BT%5D"
title="`[]=`[Idx, T, U, V](a: var array[Idx, T]; x: HSlice[U, V]; b: openArray[T])">`[]=`[Idx, T, U, V](a: var array[Idx, T]; x: HSlice[U, V]; b: openArray[T])</a></li>
<li><a class="reference" href="#%5B%5D%3D%2Cseq%5BT%5D%2CHSlice%5BU%2CV%5D%2CopenArray%5BT%5D"
title="`[]=`[T, U, V](s: var seq[T]; x: HSlice[U, V]; b: openArray[T])">`[]=`[T, U, V](s: var seq[T]; x: HSlice[U, V]; b: openArray[T])</a></li>
<li><a class="reference" href="#%5B%5D%3D%2CopenArray%5BT%5D%2CBackwardsIndex%2CT"
title="`[]=`[T](s: var openArray[T]; i: BackwardsIndex; x: T)">`[]=`[T](s: var openArray[T]; i: BackwardsIndex; x: T)</a></li>
<li><a class="reference" href="#%5B%5D%3D%2Carray%5BIdx%2CT%5D%2CBackwardsIndex%2CT"
title="`[]=`[Idx, T](a: var array[Idx, T]; i: BackwardsIndex; x: T)">`[]=`[Idx, T](a: var array[Idx, T]; i: BackwardsIndex; x: T)</a></li>
<li><a class="reference" href="#%5B%5D%3D%2Cstring%2CBackwardsIndex%2Cchar"
title="`[]=`(s: var string; i: BackwardsIndex; x: char)">`[]=`(s: var string; i: BackwardsIndex; x: char)</a></li>
</ul>
<ul class="simple nested-toc-section">addQuitProc
<li><a class="reference" href="#addQuitProc%2Cproc%29"
title="addQuitProc(quitProc: proc () {.noconv.})">addQuitProc(quitProc: proc () {.noconv.})</a></li>
</ul>
<ul class="simple nested-toc-section">allocShared0Impl
<li><a class="reference" href="#allocShared0Impl%2CNatural"
title="allocShared0Impl(size: Natural): pointer">allocShared0Impl(size: Natural): pointer</a></li>
</ul>
<ul class="simple nested-toc-section">div
<li><a class="reference" href="#div%2Cint%2Cint"
title="`div`(x, y: int): int">`div`(x, y: int): int</a></li>
<li><a class="reference" href="#div%2Cint8%2Cint8"
title="`div`(x, y: int8): int8">`div`(x, y: int8): int8</a></li>
<li><a class="reference" href="#div%2Cint16%2Cint16"
title="`div`(x, y: int16): int16">`div`(x, y: int16): int16</a></li>
<li><a class="reference" href="#div%2Cint32%2Cint32"
title="`div`(x, y: int32): int32">`div`(x, y: int32): int32</a></li>
<li><a class="reference" href="#div%2Cint64%2Cint64"
title="`div`(x, y: int64): int64">`div`(x, y: int64): int64</a></li>
<li><a class="reference" href="#div%2Cuint%2Cuint"
title="`div`(x, y: uint): uint">`div`(x, y: uint): uint</a></li>
<li><a class="reference" href="#div%2Cuint8%2Cuint8"
title="`div`(x, y: uint8): uint8">`div`(x, y: uint8): uint8</a></li>
<li><a class="reference" href="#div%2Cuint16%2Cuint16"
title="`div`(x, y: uint16): uint16">`div`(x, y: uint16): uint16</a></li>
<li><a class="reference" href="#div%2Cuint32%2Cuint32"
title="`div`(x, y: uint32): uint32">`div`(x, y: uint32): uint32</a></li>
<li><a class="reference" href="#div%2Cuint64%2Cuint64"
title="`div`(x, y: uint64): uint64">`div`(x, y: uint64): uint64</a></li>
</ul>
<ul class="simple nested-toc-section">atomicDec
<li><a class="reference" href="#atomicDec%2Cint%2Cint"
title="atomicDec(memLoc: var int; x: int = 1): int">atomicDec(memLoc: var int; x: int = 1): int</a></li>
</ul>
<ul class="simple nested-toc-section">staticRead
<li><a class="reference" href="#staticRead%2Cstring"
title="staticRead(filename: string): string">staticRead(filename: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">gorge
<li><a class="reference" href="#gorge%2Cstring%2Cstring%2Cstring"
title="gorge(command: string; input = &quot;&quot;; cache = &quot;&quot;): string">gorge(command: string; input = &quot;&quot;; cache = &quot;&quot;): string</a></li>
</ul>
<ul class="simple nested-toc-section">GC_unref
<li><a class="reference" href="#GC_unref%2Cref.T"
title="GC_unref[T](x: ref T)">GC_unref[T](x: ref T)</a></li>
<li><a class="reference" href="#GC_unref%2Cseq%5BT%5D"
title="GC_unref[T](x: seq[T])">GC_unref[T](x: seq[T])</a></li>
<li><a class="reference" href="#GC_unref%2Cstring"
title="GC_unref(x: string)">GC_unref(x: string)</a></li>
</ul>
<ul class="simple nested-toc-section">ze
<li><a class="reference" href="#ze%2Cint8"
title="ze(x: int8): int">ze(x: int8): int</a></li>
<li><a class="reference" href="#ze%2Cint16"
title="ze(x: int16): int">ze(x: int16): int</a></li>
</ul>
<ul class="simple nested-toc-section">rawProc
<li><a class="reference" href="#rawProc%2CT"
title="rawProc[T: proc](x: T): pointer">rawProc[T: proc](x: T): pointer</a></li>
</ul>
<ul class="simple nested-toc-section">freeShared
<li><a class="reference" href="#freeShared%2Cptr.T"
title="freeShared[T](p: ptr T)">freeShared[T](p: ptr T)</a></li>
</ul>
<ul class="simple nested-toc-section">insert
<li><a class="reference" href="#insert%2Cseq%5BT%5D%2CsinkT"
title="insert[T](x: var seq[T]; item: sink T; i = 0.Natural)">insert[T](x: var seq[T]; item: sink T; i = 0.Natural)</a></li>
<li><a class="reference" href="#insert%2Cstring%2Cstring"
title="insert(x: var string; item: string; i = 0.Natural)">insert(x: var string; item: string; i = 0.Natural)</a></li>
</ul>
<ul class="simple nested-toc-section">@
<li><a class="reference" href="#%40%2Csinkarray%5BIDX%2CT%5D"
title="`@`[IDX, T](a: sink array[IDX, T]): seq[T]">`@`[IDX, T](a: sink array[IDX, T]): seq[T]</a></li>
<li><a class="reference" href="#%40%2CopenArray%5BT%5D"
title="`@`[T](a: openArray[T]): seq[T]">`@`[T](a: openArray[T]): seq[T]</a></li>
</ul>
<ul class="simple nested-toc-section">wasMoved
<li><a class="reference" href="#wasMoved%2CT"
title="wasMoved[T](obj: var T)">wasMoved[T](obj: var T)</a></li>
</ul>
<ul class="simple nested-toc-section">shallow
<li><a class="reference" href="#shallow%2Cseq%5BT%5D"
title="shallow[T](s: var seq[T])">shallow[T](s: var seq[T])</a></li>
<li><a class="reference" href="#shallow%2Cstring"
title="shallow(s: var string)">shallow(s: var string)</a></li>
</ul>
<ul class="simple nested-toc-section">inc
<li><a class="reference" href="#inc%2CT%2Cint"
title="inc[T: Ordinal](x: var T; y = 1)">inc[T: Ordinal](x: var T; y = 1)</a></li>
</ul>
<ul class="simple nested-toc-section">dec
<li><a class="reference" href="#dec%2CT%2Cint"
title="dec[T: Ordinal](x: var T; y = 1)">dec[T: Ordinal](x: var T; y = 1)</a></li>
</ul>
<ul class="simple nested-toc-section">internalNew
<li><a class="reference" href="#internalNew%2Cref.T"
title="internalNew[T](a: var ref T)">internalNew[T](a: var ref T)</a></li>
</ul>
<ul class="simple nested-toc-section">delete
<li><a class="reference" href="#delete%2Cseq%5BT%5D%2CNatural"
title="delete[T](x: var seq[T]; i: Natural)">delete[T](x: var seq[T]; i: Natural)</a></li>
</ul>
<ul class="simple nested-toc-section">setControlCHook
<li><a class="reference" href="#setControlCHook%2Cproc%29"
title="setControlCHook(hook: proc () {.noconv.})">setControlCHook(hook: proc () {.noconv.})</a></li>
</ul>
<ul class="simple nested-toc-section">locals
<li><a class="reference" href="#locals"
title="locals(): RootObj">locals(): RootObj</a></li>
</ul>
<ul class="simple nested-toc-section">newSeq
<li><a class="reference" href="#newSeq%2Cseq%5BT%5D%2CNatural"
title="newSeq[T](s: var seq[T]; len: Natural)">newSeq[T](s: var seq[T]; len: Natural)</a></li>
<li><a class="reference" href="#newSeq"
title="newSeq[T](len = 0.Natural): seq[T]">newSeq[T](len = 0.Natural): seq[T]</a></li>
</ul>
<ul class="simple nested-toc-section">debugEcho
<li><a class="reference" href="#debugEcho%2Cvarargs%5Btyped%2C%5D"
title="debugEcho(x: varargs[typed, `$`])">debugEcho(x: varargs[typed, `$`])</a></li>
</ul>
<ul class="simple nested-toc-section">setupForeignThreadGc
<li><a class="reference" href="#setupForeignThreadGc"
title="setupForeignThreadGc()">setupForeignThreadGc()</a></li>
</ul>
<ul class="simple nested-toc-section">getCurrentException
<li><a class="reference" href="#getCurrentException"
title="getCurrentException(): ref Exception">getCurrentException(): ref Exception</a></li>
</ul>
<ul class="simple nested-toc-section">shr
<li><a class="reference" href="#shr%2Cint%2CSomeInteger"
title="`shr`(x: int; y: SomeInteger): int">`shr`(x: int; y: SomeInteger): int</a></li>
<li><a class="reference" href="#shr%2Cint8%2CSomeInteger"
title="`shr`(x: int8; y: SomeInteger): int8">`shr`(x: int8; y: SomeInteger): int8</a></li>
<li><a class="reference" href="#shr%2Cint16%2CSomeInteger"
title="`shr`(x: int16; y: SomeInteger): int16">`shr`(x: int16; y: SomeInteger): int16</a></li>
<li><a class="reference" href="#shr%2Cint32%2CSomeInteger"
title="`shr`(x: int32; y: SomeInteger): int32">`shr`(x: int32; y: SomeInteger): int32</a></li>
<li><a class="reference" href="#shr%2Cint64%2CSomeInteger"
title="`shr`(x: int64; y: SomeInteger): int64">`shr`(x: int64; y: SomeInteger): int64</a></li>
<li><a class="reference" href="#shr%2Cuint%2CSomeInteger"
title="`shr`(x: uint; y: SomeInteger): uint">`shr`(x: uint; y: SomeInteger): uint</a></li>
<li><a class="reference" href="#shr%2Cuint8%2CSomeInteger"
title="`shr`(x: uint8; y: SomeInteger): uint8">`shr`(x: uint8; y: SomeInteger): uint8</a></li>
<li><a class="reference" href="#shr%2Cuint16%2CSomeInteger"
title="`shr`(x: uint16; y: SomeInteger): uint16">`shr`(x: uint16; y: SomeInteger): uint16</a></li>
<li><a class="reference" href="#shr%2Cuint32%2CSomeInteger"
title="`shr`(x: uint32; y: SomeInteger): uint32">`shr`(x: uint32; y: SomeInteger): uint32</a></li>
<li><a class="reference" href="#shr%2Cuint64%2CSomeInteger"
title="`shr`(x: uint64; y: SomeInteger): uint64">`shr`(x: uint64; y: SomeInteger): uint64</a></li>
</ul>
<ul class="simple nested-toc-section">/%
<li><a class="reference" href="#%2F%25%2Cint%2Cint"
title="`/%`(x, y: int): int">`/%`(x, y: int): int</a></li>
<li><a class="reference" href="#%2F%25%2Cint8%2Cint8"
title="`/%`(x, y: int8): int8">`/%`(x, y: int8): int8</a></li>
<li><a class="reference" href="#%2F%25%2Cint16%2Cint16"
title="`/%`(x, y: int16): int16">`/%`(x, y: int16): int16</a></li>
<li><a class="reference" href="#%2F%25%2Cint32%2Cint32"
title="`/%`(x, y: int32): int32">`/%`(x, y: int32): int32</a></li>
<li><a class="reference" href="#%2F%25%2Cint64%2Cint64"
title="`/%`(x, y: int64): int64">`/%`(x, y: int64): int64</a></li>
</ul>
<ul class="simple nested-toc-section">instantiationInfo
<li><a class="reference" href="#instantiationInfo"
title="instantiationInfo(index = -1; fullPaths = false): tuple[filename: string,
line: int, column: int]">instantiationInfo(index = -1; fullPaths = false): tuple[filename: string,
line: int, column: int]</a></li>
</ul>
<ul class="simple nested-toc-section">compileOption
<li><a class="reference" href="#compileOption%2Cstring"
title="compileOption(option: string): bool">compileOption(option: string): bool</a></li>
<li><a class="reference" href="#compileOption%2Cstring%2Cstring"
title="compileOption(option, arg: string): bool">compileOption(option, arg: string): bool</a></li>
</ul>
<ul class="simple nested-toc-section">newSeqOfCap
<li><a class="reference" href="#newSeqOfCap%2CNatural"
title="newSeqOfCap[T](cap: Natural): seq[T]">newSeqOfCap[T](cap: Natural): seq[T]</a></li>
</ul>
<ul class="simple nested-toc-section">getFrame
<li><a class="reference" href="#getFrame"
title="getFrame(): PFrame">getFrame(): PFrame</a></li>
</ul>
<ul class="simple nested-toc-section">addInt
<li><a class="reference" href="#addInt%2Cstring%2Cint64"
title="addInt(result: var string; x: int64)">addInt(result: var string; x: int64)</a></li>
</ul>
<ul class="simple nested-toc-section">substr
<li><a class="reference" href="#substr%2Cstring%2Cint%2Cint"
title="substr(s: string; first, last: int): string">substr(s: string; first, last: int): string</a></li>
<li><a class="reference" href="#substr%2Cstring%2Cint"
title="substr(s: string; first = 0): string">substr(s: string; first = 0): string</a></li>
</ul>
<ul class="simple nested-toc-section">writeStackTrace
<li><a class="reference" href="#writeStackTrace"
title="writeStackTrace()">writeStackTrace()</a></li>
</ul>
<ul class="simple nested-toc-section">&
<li><a class="reference" href="#%26%2Cstring%2Cchar"
title="`&amp;`(x: string; y: char): string">`&amp;`(x: string; y: char): string</a></li>
<li><a class="reference" href="#%26%2Cchar%2Cchar"
title="`&amp;`(x, y: char): string">`&amp;`(x, y: char): string</a></li>
<li><a class="reference" href="#%26%2Cstring%2Cstring"
title="`&amp;`(x, y: string): string">`&amp;`(x, y: string): string</a></li>
<li><a class="reference" href="#%26%2Cchar%2Cstring"
title="`&amp;`(x: char; y: string): string">`&amp;`(x: char; y: string): string</a></li>
<li><a class="reference" href="#%26%2Cseq%5BT%5D%2Cseq%5BT%5D"
title="`&amp;`[T](x, y: seq[T]): seq[T]">`&amp;`[T](x, y: seq[T]): seq[T]</a></li>
<li><a class="reference" href="#%26%2Cseq%5BT%5D%2CT"
title="`&amp;`[T](x: seq[T]; y: T): seq[T]">`&amp;`[T](x: seq[T]; y: T): seq[T]</a></li>
<li><a class="reference" href="#%26%2CT%2Cseq%5BT%5D"
title="`&amp;`[T](x: T; y: seq[T]): seq[T]">`&amp;`[T](x: T; y: seq[T]): seq[T]</a></li>
</ul>
<ul class="simple nested-toc-section">dispose
<li><a class="reference" href="#dispose%2CForeignCell"
title="dispose(x: ForeignCell)">dispose(x: ForeignCell)</a></li>
</ul>
<ul class="simple nested-toc-section">incl
<li><a class="reference" href="#incl%2Cset%5BT%5D%2CT"
title="incl[T](x: var set[T]; y: T)">incl[T](x: var set[T]; y: T)</a></li>
</ul>
<ul class="simple nested-toc-section">createSharedU
<li><a class="reference" href="#createSharedU%2Ctypedesc"
title="createSharedU(T: typedesc; size = 1.Positive): ptr T:type">createSharedU(T: typedesc; size = 1.Positive): ptr T:type</a></li>
</ul>
<ul class="simple nested-toc-section">deallocSharedImpl
<li><a class="reference" href="#deallocSharedImpl%2Cpointer"
title="deallocSharedImpl(p: pointer)">deallocSharedImpl(p: pointer)</a></li>
</ul>
<ul class="simple nested-toc-section">getCurrentExceptionMsg
<li><a class="reference" href="#getCurrentExceptionMsg"
title="getCurrentExceptionMsg(): string">getCurrentExceptionMsg(): string</a></li>
</ul>
<ul class="simple nested-toc-section">setGcFrame
<li><a class="reference" href="#setGcFrame%2CGcFrame"
title="setGcFrame(s: GcFrame)">setGcFrame(s: GcFrame)</a></li>
</ul>
<ul class="simple nested-toc-section">&=
<li><a class="reference" href="#%26%3D%2Cstring%2Cstring"
title="`&amp;=`(x: var string; y: string)">`&amp;=`(x: var string; y: string)</a></li>
</ul>
<ul class="simple nested-toc-section">getFrameState
<li><a class="reference" href="#getFrameState"
title="getFrameState(): FrameState">getFrameState(): FrameState</a></li>
</ul>
<ul class="simple nested-toc-section">equalMem
<li><a class="reference" href="#equalMem%2Cpointer%2Cpointer%2CNatural"
title="equalMem(a, b: pointer; size: Natural): bool">equalMem(a, b: pointer; size: Natural): bool</a></li>
</ul>
<ul class="simple nested-toc-section"><%
<li><a class="reference" href="#%3C%25%2Cint%2Cint"
title="`&lt;%`(x, y: int): bool">`&lt;%`(x, y: int): bool</a></li>
<li><a class="reference" href="#%3C%25%2Cint8%2Cint8"
title="`&lt;%`(x, y: int8): bool">`&lt;%`(x, y: int8): bool</a></li>
<li><a class="reference" href="#%3C%25%2Cint16%2Cint16"
title="`&lt;%`(x, y: int16): bool">`&lt;%`(x, y: int16): bool</a></li>
<li><a class="reference" href="#%3C%25%2Cint32%2Cint32"
title="`&lt;%`(x, y: int32): bool">`&lt;%`(x, y: int32): bool</a></li>
<li><a class="reference" href="#%3C%25%2Cint64%2Cint64"
title="`&lt;%`(x, y: int64): bool">`&lt;%`(x, y: int64): bool</a></li>
</ul>
<ul class="simple nested-toc-section">setFrameState
<li><a class="reference" href="#setFrameState%2CFrameState"
title="setFrameState(state: FrameState)">setFrameState(state: FrameState)</a></li>
</ul>
<ul class="simple nested-toc-section">allocImpl
<li><a class="reference" href="#allocImpl%2CNatural"
title="allocImpl(size: Natural): pointer">allocImpl(size: Natural): pointer</a></li>
</ul>
<ul class="simple nested-toc-section">procCall
<li><a class="reference" href="#procCall%2Cuntyped"
title="procCall(x: untyped)">procCall(x: untyped)</a></li>
</ul>
<ul class="simple nested-toc-section">cmpMem
<li><a class="reference" href="#cmpMem%2Cpointer%2Cpointer%2CNatural"
title="cmpMem(a, b: pointer; size: Natural): int">cmpMem(a, b: pointer; size: Natural): int</a></li>
</ul>
<ul class="simple nested-toc-section">contains
<li><a class="reference" href="#contains%2Cset%5BT%5D%2CT"
title="contains[T](x: set[T]; y: T): bool">contains[T](x: set[T]; y: T): bool</a></li>
<li><a class="reference" href="#contains%2CHSlice%5BU%2CV%5D%2CW"
title="contains[U, V, W](s: HSlice[U, V]; value: W): bool">contains[U, V, W](s: HSlice[U, V]; value: W): bool</a></li>
<li><a class="reference" href="#contains%2CopenArray%5BT%5D%2CT"
title="contains[T](a: openArray[T]; item: T): bool">contains[T](a: openArray[T]; item: T): bool</a></li>
</ul>
<ul class="simple nested-toc-section">getStackTraceEntries
<li><a class="reference" href="#getStackTraceEntries%2Cref.Exception"
title="getStackTraceEntries(e: ref Exception): seq[StackTraceEntry]">getStackTraceEntries(e: ref Exception): seq[StackTraceEntry]</a></li>
<li><a class="reference" href="#getStackTraceEntries"
title="getStackTraceEntries(): seq[StackTraceEntry]">getStackTraceEntries(): seq[StackTraceEntry]</a></li>
</ul>
<ul class="simple nested-toc-section">isNil
<li><a class="reference" href="#isNil%2Cseq%5BT%5D"
title="isNil[T](x: seq[T]): bool">isNil[T](x: seq[T]): bool</a></li>
<li><a class="reference" href="#isNil%2Cref.T"
title="isNil[T](x: ref T): bool">isNil[T](x: ref T): bool</a></li>
<li><a class="reference" href="#isNil%2Cstring"
title="isNil(x: string): bool">isNil(x: string): bool</a></li>
<li><a class="reference" href="#isNil%2Cptr.T"
title="isNil[T](x: ptr T): bool">isNil[T](x: ptr T): bool</a></li>
<li><a class="reference" href="#isNil%2Cpointer"
title="isNil(x: pointer): bool">isNil(x: pointer): bool</a></li>
<li><a class="reference" href="#isNil%2Ccstring"
title="isNil(x: cstring): bool">isNil(x: cstring): bool</a></li>
<li><a class="reference" href="#isNil%2CT"
title="isNil[T: proc](x: T): bool">isNil[T: proc](x: T): bool</a></li>
</ul>
<ul class="simple nested-toc-section">allocCStringArray
<li><a class="reference" href="#allocCStringArray%2CopenArray%5Bstring%5D"
title="allocCStringArray(a: openArray[string]): cstringArray">allocCStringArray(a: openArray[string]): cstringArray</a></li>
</ul>
<ul class="simple nested-toc-section">unsetControlCHook
<li><a class="reference" href="#unsetControlCHook"
title="unsetControlCHook()">unsetControlCHook()</a></li>
</ul>
<ul class="simple nested-toc-section">toInt
<li><a class="reference" href="#toInt%2Cfloat"
title="toInt(f: float): int">toInt(f: float): int</a></li>
</ul>
<ul class="simple nested-toc-section">card
<li><a class="reference" href="#card%2Cset%5BT%5D"
title="card[T](x: set[T]): int">card[T](x: set[T]): int</a></li>
</ul>
<ul class="simple nested-toc-section">and
<li><a class="reference" href="#and%2Cbool%2Cbool"
title="`and`(x, y: bool): bool">`and`(x, y: bool): bool</a></li>
<li><a class="reference" href="#and%2Ctypedesc%2Ctypedesc"
title="`and`(a, b: typedesc): typedesc">`and`(a, b: typedesc): typedesc</a></li>
<li><a class="reference" href="#and%2Cint%2Cint"
title="`and`(x, y: int): int">`and`(x, y: int): int</a></li>
<li><a class="reference" href="#and%2Cint8%2Cint8"
title="`and`(x, y: int8): int8">`and`(x, y: int8): int8</a></li>
<li><a class="reference" href="#and%2Cint16%2Cint16"
title="`and`(x, y: int16): int16">`and`(x, y: int16): int16</a></li>
<li><a class="reference" href="#and%2Cint32%2Cint32"
title="`and`(x, y: int32): int32">`and`(x, y: int32): int32</a></li>
<li><a class="reference" href="#and%2Cint64%2Cint64"
title="`and`(x, y: int64): int64">`and`(x, y: int64): int64</a></li>
<li><a class="reference" href="#and%2Cuint%2Cuint"
title="`and`(x, y: uint): uint">`and`(x, y: uint): uint</a></li>
<li><a class="reference" href="#and%2Cuint8%2Cuint8"
title="`and`(x, y: uint8): uint8">`and`(x, y: uint8): uint8</a></li>
<li><a class="reference" href="#and%2Cuint16%2Cuint16"
title="`and`(x, y: uint16): uint16">`and`(x, y: uint16): uint16</a></li>
<li><a class="reference" href="#and%2Cuint32%2Cuint32"
title="`and`(x, y: uint32): uint32">`and`(x, y: uint32): uint32</a></li>
<li><a class="reference" href="#and%2Cuint64%2Cuint64"
title="`and`(x, y: uint64): uint64">`and`(x, y: uint64): uint64</a></li>
</ul>
<ul class="simple nested-toc-section">reset
<li><a class="reference" href="#reset%2CT"
title="reset[T](obj: var T)">reset[T](obj: var T)</a></li>
</ul>
<ul class="simple nested-toc-section">resizeShared
<li><a class="reference" href="#resizeShared%2Cptr.T%2CNatural"
title="resizeShared[T](p: ptr T; newSize: Natural): ptr T">resizeShared[T](p: ptr T; newSize: Natural): ptr T</a></li>
</ul>
<ul class="simple nested-toc-section">+%
<li><a class="reference" href="#%2B%25%2Cint%2Cint"
title="`+%`(x, y: int): int">`+%`(x, y: int): int</a></li>
<li><a class="reference" href="#%2B%25%2Cint8%2Cint8"
title="`+%`(x, y: int8): int8">`+%`(x, y: int8): int8</a></li>
<li><a class="reference" href="#%2B%25%2Cint16%2Cint16"
title="`+%`(x, y: int16): int16">`+%`(x, y: int16): int16</a></li>
<li><a class="reference" href="#%2B%25%2Cint32%2Cint32"
title="`+%`(x, y: int32): int32">`+%`(x, y: int32): int32</a></li>
<li><a class="reference" href="#%2B%25%2Cint64%2Cint64"
title="`+%`(x, y: int64): int64">`+%`(x, y: int64): int64</a></li>
</ul>
<ul class="simple nested-toc-section">getMaxMem
<li><a class="reference" href="#getMaxMem"
title="getMaxMem(): int">getMaxMem(): int</a></li>
</ul>
<ul class="simple nested-toc-section">cmp
<li><a class="reference" href="#cmp%2CT%2CT"
title="cmp[T](x, y: T): int">cmp[T](x, y: T): int</a></li>
<li><a class="reference" href="#cmp%2Cstring%2Cstring"
title="cmp(x, y: string): int">cmp(x, y: string): int</a></li>
</ul>
<ul class="simple nested-toc-section">addEscapedChar
<li><a class="reference" href="#addEscapedChar%2Cstring%2Cchar"
title="addEscapedChar(s: var string; c: char)">addEscapedChar(s: var string; c: char)</a></li>
</ul>
<ul class="simple nested-toc-section">dealloc
<li><a class="reference" href="#dealloc%2Cpointer"
title="dealloc(p: pointer)">dealloc(p: pointer)</a></li>
</ul>
<ul class="simple nested-toc-section">getTotalMem
<li><a class="reference" href="#getTotalMem"
title="getTotalMem(): int">getTotalMem(): int</a></li>
</ul>
<ul class="simple nested-toc-section">cpuRelax
<li><a class="reference" href="#cpuRelax"
title="cpuRelax()">cpuRelax()</a></li>
</ul>
<ul class="simple nested-toc-section">unsafeAddr
<li><a class="reference" href="#unsafeAddr%2CT"
title="unsafeAddr[T](x: T): ptr T">unsafeAddr[T](x: T): ptr T</a></li>
</ul>
<ul class="simple nested-toc-section">runnableExamples
<li><a class="reference" href="#runnableExamples%2Cstring%2Cuntyped"
title="runnableExamples(rdoccmd = &quot;&quot;; body: untyped)">runnableExamples(rdoccmd = &quot;&quot;; body: untyped)</a></li>
</ul>
<ul class="simple nested-toc-section">gorgeEx
<li><a class="reference" href="#gorgeEx%2Cstring%2Cstring%2Cstring"
title="gorgeEx(command: string; input = &quot;&quot;; cache = &quot;&quot;): tuple[output: string,
exitCode: int]">gorgeEx(command: string; input = &quot;&quot;; cache = &quot;&quot;): tuple[output: string,
exitCode: int]</a></li>
</ul>
<ul class="simple nested-toc-section">%%
<li><a class="reference" href="#%25%25%2Cint%2Cint"
title="`%%`(x, y: int): int">`%%`(x, y: int): int</a></li>
<li><a class="reference" href="#%25%25%2Cint8%2Cint8"
title="`%%`(x, y: int8): int8">`%%`(x, y: int8): int8</a></li>
<li><a class="reference" href="#%25%25%2Cint16%2Cint16"
title="`%%`(x, y: int16): int16">`%%`(x, y: int16): int16</a></li>
<li><a class="reference" href="#%25%25%2Cint32%2Cint32"
title="`%%`(x, y: int32): int32">`%%`(x, y: int32): int32</a></li>
<li><a class="reference" href="#%25%25%2Cint64%2Cint64"
title="`%%`(x, y: int64): int64">`%%`(x, y: int64): int64</a></li>
</ul>
<ul class="simple nested-toc-section">min
<li><a class="reference" href="#min%2Cint%2Cint"
title="min(x, y: int): int">min(x, y: int): int</a></li>
<li><a class="reference" href="#min%2Cint8%2Cint8"
title="min(x, y: int8): int8">min(x, y: int8): int8</a></li>
<li><a class="reference" href="#min%2Cint16%2Cint16"
title="min(x, y: int16): int16">min(x, y: int16): int16</a></li>
<li><a class="reference" href="#min%2Cint32%2Cint32"
title="min(x, y: int32): int32">min(x, y: int32): int32</a></li>
<li><a class="reference" href="#min%2Cint64%2Cint64"
title="min(x, y: int64): int64">min(x, y: int64): int64</a></li>
<li><a class="reference" href="#min%2CopenArray%5BT%5D"
title="min[T](x: openArray[T]): T">min[T](x: openArray[T]): T</a></li>
<li><a class="reference" href="#min%2Cfloat32%2Cfloat32"
title="min(x, y: float32): float32">min(x, y: float32): float32</a></li>
<li><a class="reference" href="#min%2Cfloat64%2Cfloat64"
title="min(x, y: float64): float64">min(x, y: float64): float64</a></li>
<li><a class="reference" href="#min%2CT%2CT"
title="min[T: not SomeFloat](x, y: T): T">min[T: not SomeFloat](x, y: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">finished
<li><a class="reference" href="#finished%2CT"
title="finished[T: proc](x: T): bool">finished[T: proc](x: T): bool</a></li>
</ul>
<ul class="simple nested-toc-section">deallocShared
<li><a class="reference" href="#deallocShared%2Cpointer"
title="deallocShared(p: pointer)">deallocShared(p: pointer)</a></li>
</ul>
<ul class="simple nested-toc-section">echo
<li><a class="reference" href="#echo%2Cvarargs%5Btyped%2C%5D"
title="echo(x: varargs[typed, `$`])">echo(x: varargs[typed, `$`])</a></li>
</ul>
<ul class="simple nested-toc-section">defined
<li><a class="reference" href="#defined%2Cuntyped"
title="defined(x: untyped): bool">defined(x: untyped): bool</a></li>
</ul>
<ul class="simple nested-toc-section">+=
<li><a class="reference" href="#%2B%3D%2CT%2CT"
title="`+=`[T: SomeInteger](x: var T; y: T)">`+=`[T: SomeInteger](x: var T; y: T)</a></li>
<li><a class="reference" href="#%2B%3D%2CT%2CT_2"
title="`+=`[T: float | float32 | float64](x: var T; y: T)">`+=`[T: float | float32 | float64](x: var T; y: T)</a></li>
</ul>
<ul class="simple nested-toc-section">toU8
<li><a class="reference" href="#toU8%2Cint"
title="toU8(x: int): int8">toU8(x: int): int8</a></li>
</ul>
<ul class="simple nested-toc-section">..
<li><a class="reference" href="#..%2CsinkT%2CsinkU"
title="`..`[T, U](a: sink T; b: sink U): HSlice[T, U]">`..`[T, U](a: sink T; b: sink U): HSlice[T, U]</a></li>
<li><a class="reference" href="#..%2CsinkT"
title="`..`[T](b: sink T): HSlice[int, T]">`..`[T](b: sink T): HSlice[int, T]</a></li>
</ul>
<ul class="simple nested-toc-section">resize
<li><a class="reference" href="#resize%2Cptr.T%2CNatural"
title="resize[T](p: ptr T; newSize: Natural): ptr T">resize[T](p: ptr T; newSize: Natural): ptr T</a></li>
</ul>
<ul class="simple nested-toc-section">getTypeInfo
<li><a class="reference" href="#getTypeInfo%2CT"
title="getTypeInfo[T](x: T): pointer">getTypeInfo[T](x: T): pointer</a></li>
</ul>
<ul class="simple nested-toc-section">staticExec
<li><a class="reference" href="#staticExec%2Cstring%2Cstring%2Cstring"
title="staticExec(command: string; input = &quot;&quot;; cache = &quot;&quot;): string">staticExec(command: string; input = &quot;&quot;; cache = &quot;&quot;): string</a></li>
</ul>
<ul class="simple nested-toc-section">len
<li><a class="reference" href="#len%2CTOpenArray"
title="len[TOpenArray: openArray | varargs](x: TOpenArray): int">len[TOpenArray: openArray | varargs](x: TOpenArray): int</a></li>
<li><a class="reference" href="#len%2Cstring"
title="len(x: string): int">len(x: string): int</a></li>
<li><a class="reference" href="#len%2Ccstring"
title="len(x: cstring): int">len(x: cstring): int</a></li>
<li><a class="reference" href="#len"
title="len(x: (type array) | array): int">len(x: (type array) | array): int</a></li>
<li><a class="reference" href="#len%2Cseq%5BT%5D"
title="len[T](x: seq[T]): int">len[T](x: seq[T]): int</a></li>
<li><a class="reference" href="#len%2Cset%5BT%5D"
title="len[T](x: set[T]): int">len[T](x: set[T]): int</a></li>
<li><a class="reference" href="#len%2CHSlice%5BU%3A+Ordinal%2CV%3A+Ordinal%5D"
title="len[U: Ordinal; V: Ordinal](x: HSlice[U, V]): int">len[U: Ordinal; V: Ordinal](x: HSlice[U, V]): int</a></li>
</ul>
<ul class="simple nested-toc-section">low
<li><a class="reference" href="#low%2CT"
title="low[T: Ordinal | enum | range](x: T): T">low[T: Ordinal | enum | range](x: T): T</a></li>
<li><a class="reference" href="#low%2Ctypedesc%5BT%5D"
title="low[T: Ordinal | enum | range](x: typedesc[T]): T">low[T: Ordinal | enum | range](x: typedesc[T]): T</a></li>
<li><a class="reference" href="#low%2CopenArray%5BT%5D"
title="low[T](x: openArray[T]): int">low[T](x: openArray[T]): int</a></li>
<li><a class="reference" href="#low%2Carray%5BI%2CT%5D"
title="low[I, T](x: array[I, T]): I">low[I, T](x: array[I, T]): I</a></li>
<li><a class="reference" href="#low%2Ctypedesc%5Barray%5BI%2CT%5D%5D"
title="low[I, T](x: typedesc[array[I, T]]): I">low[I, T](x: typedesc[array[I, T]]): I</a></li>
<li><a class="reference" href="#low%2Ccstring"
title="low(x: cstring): int">low(x: cstring): int</a></li>
<li><a class="reference" href="#low%2Cstring"
title="low(x: string): int">low(x: string): int</a></li>
<li><a class="reference" href="#low%2Ctypedesc%5BSomeFloat%5D"
title="low(T: typedesc[SomeFloat]): T:type">low(T: typedesc[SomeFloat]): T:type</a></li>
</ul>
<ul class="simple nested-toc-section">declaredInScope
<li><a class="reference" href="#declaredInScope%2Cuntyped"
title="declaredInScope(x: untyped): bool">declaredInScope(x: untyped): bool</a></li>
</ul>
<ul class="simple nested-toc-section">add
<li><a class="reference" href="#add%2Cstring%2Cchar"
title="add(x: var string; y: char)">add(x: var string; y: char)</a></li>
<li><a class="reference" href="#add%2Cstring%2Cstring"
title="add(x: var string; y: string)">add(x: var string; y: string)</a></li>
<li><a class="reference" href="#add%2Cseq%5BT%5D%2CsinkT"
title="add[T](x: var seq[T]; y: sink T)">add[T](x: var seq[T]; y: sink T)</a></li>
<li><a class="reference" href="#add%2Cseq%5BT%5D%2CopenArray%5BT%5D"
title="add[T](x: var seq[T]; y: openArray[T])">add[T](x: var seq[T]; y: openArray[T])</a></li>
<li><a class="reference" href="#add%2Cstring%2Ccstring"
title="add(x: var string; y: cstring)">add(x: var string; y: cstring)</a></li>
</ul>
<ul class="simple nested-toc-section">toOpenArray
<li><a class="reference" href="#toOpenArray%2Cptr.UncheckedArray%5BT%5D%2Cint%2Cint"
title="toOpenArray[T](x: ptr UncheckedArray[T]; first, last: int): openArray[T]">toOpenArray[T](x: ptr UncheckedArray[T]; first, last: int): openArray[T]</a></li>
<li><a class="reference" href="#toOpenArray%2Ccstring%2Cint%2Cint"
title="toOpenArray(x: cstring; first, last: int): openArray[char]">toOpenArray(x: cstring; first, last: int): openArray[char]</a></li>
<li><a class="reference" href="#toOpenArray%2Cseq%5BT%5D%2Cint%2Cint"
title="toOpenArray[T](x: seq[T]; first, last: int): openArray[T]">toOpenArray[T](x: seq[T]; first, last: int): openArray[T]</a></li>
<li><a class="reference" href="#toOpenArray%2CopenArray%5BT%5D%2Cint%2Cint"
title="toOpenArray[T](x: openArray[T]; first, last: int): openArray[T]">toOpenArray[T](x: openArray[T]; first, last: int): openArray[T]</a></li>
<li><a class="reference" href="#toOpenArray%2Carray%5BI%2CT%5D%2CI%2CI"
title="toOpenArray[I, T](x: array[I, T]; first, last: I): openArray[T]">toOpenArray[I, T](x: array[I, T]; first, last: I): openArray[T]</a></li>
<li><a class="reference" href="#toOpenArray%2Cstring%2Cint%2Cint"
title="toOpenArray(x: string; first, last: int): openArray[char]">toOpenArray(x: string; first, last: int): openArray[char]</a></li>
</ul>
<ul class="simple nested-toc-section">-
<li><a class="reference" href="#-%2Cint"
title="`-`(x: int): int">`-`(x: int): int</a></li>
<li><a class="reference" href="#-%2Cint8"
title="`-`(x: int8): int8">`-`(x: int8): int8</a></li>
<li><a class="reference" href="#-%2Cint16"
title="`-`(x: int16): int16">`-`(x: int16): int16</a></li>
<li><a class="reference" href="#-%2Cint32"
title="`-`(x: int32): int32">`-`(x: int32): int32</a></li>
<li><a class="reference" href="#-%2Cint64"
title="`-`(x: int64): int64">`-`(x: int64): int64</a></li>
<li><a class="reference" href="#-%2Cint%2Cint"
title="`-`(x, y: int): int">`-`(x, y: int): int</a></li>
<li><a class="reference" href="#-%2Cint8%2Cint8"
title="`-`(x, y: int8): int8">`-`(x, y: int8): int8</a></li>
<li><a class="reference" href="#-%2Cint16%2Cint16"
title="`-`(x, y: int16): int16">`-`(x, y: int16): int16</a></li>
<li><a class="reference" href="#-%2Cint32%2Cint32"
title="`-`(x, y: int32): int32">`-`(x, y: int32): int32</a></li>
<li><a class="reference" href="#-%2Cint64%2Cint64"
title="`-`(x, y: int64): int64">`-`(x, y: int64): int64</a></li>
<li><a class="reference" href="#-%2Cuint%2Cuint"
title="`-`(x, y: uint): uint">`-`(x, y: uint): uint</a></li>
<li><a class="reference" href="#-%2Cuint8%2Cuint8"
title="`-`(x, y: uint8): uint8">`-`(x, y: uint8): uint8</a></li>
<li><a class="reference" href="#-%2Cuint16%2Cuint16"
title="`-`(x, y: uint16): uint16">`-`(x, y: uint16): uint16</a></li>
<li><a class="reference" href="#-%2Cuint32%2Cuint32"
title="`-`(x, y: uint32): uint32">`-`(x, y: uint32): uint32</a></li>
<li><a class="reference" href="#-%2Cuint64%2Cuint64"
title="`-`(x, y: uint64): uint64">`-`(x, y: uint64): uint64</a></li>
<li><a class="reference" href="#-%2Cfloat32"
title="`-`(x: float32): float32">`-`(x: float32): float32</a></li>
<li><a class="reference" href="#-%2Cfloat32%2Cfloat32"
title="`-`(x, y: float32): float32">`-`(x, y: float32): float32</a></li>
<li><a class="reference" href="#-%2Cfloat"
title="`-`(x: float): float">`-`(x: float): float</a></li>
<li><a class="reference" href="#-%2Cfloat%2Cfloat"
title="`-`(x, y: float): float">`-`(x, y: float): float</a></li>
<li><a class="reference" href="#-%2Cset%5BT%5D%2Cset%5BT%5D"
title="`-`[T](x, y: set[T]): set[T]">`-`[T](x, y: set[T]): set[T]</a></li>
<li><a class="reference" href="#-%2CAllocStats%2CAllocStats"
title="`-`(a, b: AllocStats): AllocStats">`-`(a, b: AllocStats): AllocStats</a></li>
</ul>
<ul class="simple nested-toc-section">*%
<li><a class="reference" href="#%2A%25%2Cint%2Cint"
title="`*%`(x, y: int): int">`*%`(x, y: int): int</a></li>
<li><a class="reference" href="#%2A%25%2Cint8%2Cint8"
title="`*%`(x, y: int8): int8">`*%`(x, y: int8): int8</a></li>
<li><a class="reference" href="#%2A%25%2Cint16%2Cint16"
title="`*%`(x, y: int16): int16">`*%`(x, y: int16): int16</a></li>
<li><a class="reference" href="#%2A%25%2Cint32%2Cint32"
title="`*%`(x, y: int32): int32">`*%`(x, y: int32): int32</a></li>
<li><a class="reference" href="#%2A%25%2Cint64%2Cint64"
title="`*%`(x, y: int64): int64">`*%`(x, y: int64): int64</a></li>
</ul>
<ul class="simple nested-toc-section">pushGcFrame
<li><a class="reference" href="#pushGcFrame%2CGcFrame"
title="pushGcFrame(s: GcFrame)">pushGcFrame(s: GcFrame)</a></li>
</ul>
<ul class="simple nested-toc-section">GC_collectZct
<li><a class="reference" href="#GC_collectZct"
title="GC_collectZct()">GC_collectZct()</a></li>
</ul>
<ul class="simple nested-toc-section">reallocImpl
<li><a class="reference" href="#reallocImpl%2Cpointer%2CNatural"
title="reallocImpl(p: pointer; newSize: Natural): pointer">reallocImpl(p: pointer; newSize: Natural): pointer</a></li>
</ul>
<ul class="simple nested-toc-section">ashr
<li><a class="reference" href="#ashr%2Cint%2CSomeInteger"
title="ashr(x: int; y: SomeInteger): int">ashr(x: int; y: SomeInteger): int</a></li>
<li><a class="reference" href="#ashr%2Cint8%2CSomeInteger"
title="ashr(x: int8; y: SomeInteger): int8">ashr(x: int8; y: SomeInteger): int8</a></li>
<li><a class="reference" href="#ashr%2Cint16%2CSomeInteger"
title="ashr(x: int16; y: SomeInteger): int16">ashr(x: int16; y: SomeInteger): int16</a></li>
<li><a class="reference" href="#ashr%2Cint32%2CSomeInteger"
title="ashr(x: int32; y: SomeInteger): int32">ashr(x: int32; y: SomeInteger): int32</a></li>
<li><a class="reference" href="#ashr%2Cint64%2CSomeInteger"
title="ashr(x: int64; y: SomeInteger): int64">ashr(x: int64; y: SomeInteger): int64</a></li>
</ul>
<ul class="simple nested-toc-section">cas
<li><a class="reference" href="#cas%2Cptr.T%2CT%2CT"
title="cas[T: bool | int | ptr](p: ptr T; oldValue, newValue: T): bool">cas[T: bool | int | ptr](p: ptr T; oldValue, newValue: T): bool</a></li>
</ul>
<ul class="simple nested-toc-section">allocSharedImpl
<li><a class="reference" href="#allocSharedImpl%2CNatural"
title="allocSharedImpl(size: Natural): pointer">allocSharedImpl(size: Natural): pointer</a></li>
</ul>
<ul class="simple nested-toc-section">toBiggestInt
<li><a class="reference" href="#toBiggestInt%2CBiggestFloat"
title="toBiggestInt(f: BiggestFloat): BiggestInt">toBiggestInt(f: BiggestFloat): BiggestInt</a></li>
</ul>
<ul class="simple nested-toc-section">of
<li><a class="reference" href="#of%2Ctypedesc%5BT%5D%2Ctypedesc%5BS%5D"
title="`of`[T, S](x: typedesc[T]; y: typedesc[S]): bool">`of`[T, S](x: typedesc[T]; y: typedesc[S]): bool</a></li>
<li><a class="reference" href="#of%2CT%2Ctypedesc%5BS%5D"
title="`of`[T, S](x: T; y: typedesc[S]): bool">`of`[T, S](x: T; y: typedesc[S]): bool</a></li>
<li><a class="reference" href="#of%2CT%2CS"
title="`of`[T, S](x: T; y: S): bool">`of`[T, S](x: T; y: S): bool</a></li>
</ul>
<ul class="simple nested-toc-section">setCurrentException
<li><a class="reference" href="#setCurrentException%2Cref.Exception"
title="setCurrentException(exc: ref Exception)">setCurrentException(exc: ref Exception)</a></li>
</ul>
<ul class="simple nested-toc-section"><=%
<li><a class="reference" href="#%3C%3D%25%2Cint%2Cint"
title="`&lt;=%`(x, y: int): bool">`&lt;=%`(x, y: int): bool</a></li>
<li><a class="reference" href="#%3C%3D%25%2Cint8%2Cint8"
title="`&lt;=%`(x, y: int8): bool">`&lt;=%`(x, y: int8): bool</a></li>
<li><a class="reference" href="#%3C%3D%25%2Cint16%2Cint16"
title="`&lt;=%`(x, y: int16): bool">`&lt;=%`(x, y: int16): bool</a></li>
<li><a class="reference" href="#%3C%3D%25%2Cint32%2Cint32"
title="`&lt;=%`(x, y: int32): bool">`&lt;=%`(x, y: int32): bool</a></li>
<li><a class="reference" href="#%3C%3D%25%2Cint64%2Cint64"
title="`&lt;=%`(x, y: int64): bool">`&lt;=%`(x, y: int64): bool</a></li>
</ul>
<ul class="simple nested-toc-section">ze64
<li><a class="reference" href="#ze64%2Cint8"
title="ze64(x: int8): int64">ze64(x: int8): int64</a></li>
<li><a class="reference" href="#ze64%2Cint16"
title="ze64(x: int16): int64">ze64(x: int16): int64</a></li>
<li><a class="reference" href="#ze64%2Cint32"
title="ze64(x: int32): int64">ze64(x: int32): int64</a></li>
<li><a class="reference" href="#ze64%2Cint"
title="ze64(x: int): int64">ze64(x: int): int64</a></li>
</ul>
<ul class="simple nested-toc-section">reallocShared0Impl
<li><a class="reference" href="#reallocShared0Impl%2Cpointer%2CNatural%2CNatural"
title="reallocShared0Impl(p: pointer; oldSize, newSize: Natural): pointer">reallocShared0Impl(p: pointer; oldSize, newSize: Natural): pointer</a></li>
</ul>
<ul class="simple nested-toc-section">+
<li><a class="reference" href="#%2B%2Cint"
title="`+`(x: int): int">`+`(x: int): int</a></li>
<li><a class="reference" href="#%2B%2Cint8"
title="`+`(x: int8): int8">`+`(x: int8): int8</a></li>
<li><a class="reference" href="#%2B%2Cint16"
title="`+`(x: int16): int16">`+`(x: int16): int16</a></li>
<li><a class="reference" href="#%2B%2Cint32"
title="`+`(x: int32): int32">`+`(x: int32): int32</a></li>
<li><a class="reference" href="#%2B%2Cint64"
title="`+`(x: int64): int64">`+`(x: int64): int64</a></li>
<li><a class="reference" href="#%2B%2Cint%2Cint"
title="`+`(x, y: int): int">`+`(x, y: int): int</a></li>
<li><a class="reference" href="#%2B%2Cint8%2Cint8"
title="`+`(x, y: int8): int8">`+`(x, y: int8): int8</a></li>
<li><a class="reference" href="#%2B%2Cint16%2Cint16"
title="`+`(x, y: int16): int16">`+`(x, y: int16): int16</a></li>
<li><a class="reference" href="#%2B%2Cint32%2Cint32"
title="`+`(x, y: int32): int32">`+`(x, y: int32): int32</a></li>
<li><a class="reference" href="#%2B%2Cint64%2Cint64"
title="`+`(x, y: int64): int64">`+`(x, y: int64): int64</a></li>
<li><a class="reference" href="#%2B%2Cuint%2Cuint"
title="`+`(x, y: uint): uint">`+`(x, y: uint): uint</a></li>
<li><a class="reference" href="#%2B%2Cuint8%2Cuint8"
title="`+`(x, y: uint8): uint8">`+`(x, y: uint8): uint8</a></li>
<li><a class="reference" href="#%2B%2Cuint16%2Cuint16"
title="`+`(x, y: uint16): uint16">`+`(x, y: uint16): uint16</a></li>
<li><a class="reference" href="#%2B%2Cuint32%2Cuint32"
title="`+`(x, y: uint32): uint32">`+`(x, y: uint32): uint32</a></li>
<li><a class="reference" href="#%2B%2Cuint64%2Cuint64"
title="`+`(x, y: uint64): uint64">`+`(x, y: uint64): uint64</a></li>
<li><a class="reference" href="#%2B%2Cfloat32"
title="`+`(x: float32): float32">`+`(x: float32): float32</a></li>
<li><a class="reference" href="#%2B%2Cfloat32%2Cfloat32"
title="`+`(x, y: float32): float32">`+`(x, y: float32): float32</a></li>
<li><a class="reference" href="#%2B%2Cfloat"
title="`+`(x: float): float">`+`(x: float): float</a></li>
<li><a class="reference" href="#%2B%2Cfloat%2Cfloat"
title="`+`(x, y: float): float">`+`(x, y: float): float</a></li>
<li><a class="reference" href="#%2B%2Cset%5BT%5D%2Cset%5BT%5D"
title="`+`[T](x, y: set[T]): set[T]">`+`[T](x, y: set[T]): set[T]</a></li>
</ul>
<ul class="simple nested-toc-section">toBiggestFloat
<li><a class="reference" href="#toBiggestFloat%2CBiggestInt"
title="toBiggestFloat(i: BiggestInt): BiggestFloat">toBiggestFloat(i: BiggestInt): BiggestFloat</a></li>
</ul>
<ul class="simple nested-toc-section">mod
<li><a class="reference" href="#mod%2Cint%2Cint"
title="`mod`(x, y: int): int">`mod`(x, y: int): int</a></li>
<li><a class="reference" href="#mod%2Cint8%2Cint8"
title="`mod`(x, y: int8): int8">`mod`(x, y: int8): int8</a></li>
<li><a class="reference" href="#mod%2Cint16%2Cint16"
title="`mod`(x, y: int16): int16">`mod`(x, y: int16): int16</a></li>
<li><a class="reference" href="#mod%2Cint32%2Cint32"
title="`mod`(x, y: int32): int32">`mod`(x, y: int32): int32</a></li>
<li><a class="reference" href="#mod%2Cint64%2Cint64"
title="`mod`(x, y: int64): int64">`mod`(x, y: int64): int64</a></li>
<li><a class="reference" href="#mod%2Cuint%2Cuint"
title="`mod`(x, y: uint): uint">`mod`(x, y: uint): uint</a></li>
<li><a class="reference" href="#mod%2Cuint8%2Cuint8"
title="`mod`(x, y: uint8): uint8">`mod`(x, y: uint8): uint8</a></li>
<li><a class="reference" href="#mod%2Cuint16%2Cuint16"
title="`mod`(x, y: uint16): uint16">`mod`(x, y: uint16): uint16</a></li>
<li><a class="reference" href="#mod%2Cuint32%2Cuint32"
title="`mod`(x, y: uint32): uint32">`mod`(x, y: uint32): uint32</a></li>
<li><a class="reference" href="#mod%2Cuint64%2Cuint64"
title="`mod`(x, y: uint64): uint64">`mod`(x, y: uint64): uint64</a></li>
</ul>
<ul class="simple nested-toc-section">getGcFrame
<li><a class="reference" href="#getGcFrame"
title="getGcFrame(): GcFrame">getGcFrame(): GcFrame</a></li>
</ul>
<ul class="simple nested-toc-section">setLen
<li><a class="reference" href="#setLen%2Cseq%5BT%5D%2CNatural"
title="setLen[T](s: var seq[T]; newlen: Natural)">setLen[T](s: var seq[T]; newlen: Natural)</a></li>
<li><a class="reference" href="#setLen%2Cstring%2CNatural"
title="setLen(s: var string; newlen: Natural)">setLen(s: var string; newlen: Natural)</a></li>
</ul>
<ul class="simple nested-toc-section">|
<li><a class="reference" href="#%7C%2Ctypedesc%2Ctypedesc"
title="`|`(a, b: typedesc): typedesc">`|`(a, b: typedesc): typedesc</a></li>
</ul>
<ul class="simple nested-toc-section">excl
<li><a class="reference" href="#excl%2Cset%5BT%5D%2CT"
title="excl[T](x: var set[T]; y: T)">excl[T](x: var set[T]; y: T)</a></li>
</ul>
<ul class="simple nested-toc-section">addAndFetch
<li><a class="reference" href="#addAndFetch%2Cptr.int%2Cint"
title="addAndFetch(p: ptr int; val: int): int">addAndFetch(p: ptr int; val: int): int</a></li>
</ul>
<ul class="simple nested-toc-section">xor
<li><a class="reference" href="#xor%2Cbool%2Cbool"
title="`xor`(x, y: bool): bool">`xor`(x, y: bool): bool</a></li>
<li><a class="reference" href="#xor%2Cint%2Cint"
title="`xor`(x, y: int): int">`xor`(x, y: int): int</a></li>
<li><a class="reference" href="#xor%2Cint8%2Cint8"
title="`xor`(x, y: int8): int8">`xor`(x, y: int8): int8</a></li>
<li><a class="reference" href="#xor%2Cint16%2Cint16"
title="`xor`(x, y: int16): int16">`xor`(x, y: int16): int16</a></li>
<li><a class="reference" href="#xor%2Cint32%2Cint32"
title="`xor`(x, y: int32): int32">`xor`(x, y: int32): int32</a></li>
<li><a class="reference" href="#xor%2Cint64%2Cint64"
title="`xor`(x, y: int64): int64">`xor`(x, y: int64): int64</a></li>
<li><a class="reference" href="#xor%2Cuint%2Cuint"
title="`xor`(x, y: uint): uint">`xor`(x, y: uint): uint</a></li>
<li><a class="reference" href="#xor%2Cuint8%2Cuint8"
title="`xor`(x, y: uint8): uint8">`xor`(x, y: uint8): uint8</a></li>
<li><a class="reference" href="#xor%2Cuint16%2Cuint16"
title="`xor`(x, y: uint16): uint16">`xor`(x, y: uint16): uint16</a></li>
<li><a class="reference" href="#xor%2Cuint32%2Cuint32"
title="`xor`(x, y: uint32): uint32">`xor`(x, y: uint32): uint32</a></li>
<li><a class="reference" href="#xor%2Cuint64%2Cuint64"
title="`xor`(x, y: uint64): uint64">`xor`(x, y: uint64): uint64</a></li>
</ul>
<ul class="simple nested-toc-section">newString
<li><a class="reference" href="#newString%2CNatural"
title="newString(len: Natural): string">newString(len: Natural): string</a></li>
</ul>
<ul class="simple nested-toc-section">GC_ref
<li><a class="reference" href="#GC_ref%2Cref.T"
title="GC_ref[T](x: ref T)">GC_ref[T](x: ref T)</a></li>
<li><a class="reference" href="#GC_ref%2Cseq%5BT%5D"
title="GC_ref[T](x: seq[T])">GC_ref[T](x: seq[T])</a></li>
<li><a class="reference" href="#GC_ref%2Cstring"
title="GC_ref(x: string)">GC_ref(x: string)</a></li>
</ul>
<ul class="simple nested-toc-section">GC_enableMarkAndSweep
<li><a class="reference" href="#GC_enableMarkAndSweep"
title="GC_enableMarkAndSweep()">GC_enableMarkAndSweep()</a></li>
</ul>
<ul class="simple nested-toc-section">newSeqUninitialized
<li><a class="reference" href="#newSeqUninitialized%2CNatural"
title="newSeqUninitialized[T: SomeNumber](len: Natural): seq[T]">newSeqUninitialized[T: SomeNumber](len: Natural): seq[T]</a></li>
</ul>
<ul class="simple nested-toc-section">sizeof
<li><a class="reference" href="#sizeof%2CT"
title="sizeof[T](x: T): int">sizeof[T](x: T): int</a></li>
<li><a class="reference" href="#sizeof%2Ctypedesc"
title="sizeof(x: typedesc): int">sizeof(x: typedesc): int</a></li>
</ul>
<ul class="simple nested-toc-section">or
<li><a class="reference" href="#or%2Cbool%2Cbool"
title="`or`(x, y: bool): bool">`or`(x, y: bool): bool</a></li>
<li><a class="reference" href="#or%2Ctypedesc%2Ctypedesc"
title="`or`(a, b: typedesc): typedesc">`or`(a, b: typedesc): typedesc</a></li>
<li><a class="reference" href="#or%2Cint%2Cint"
title="`or`(x, y: int): int">`or`(x, y: int): int</a></li>
<li><a class="reference" href="#or%2Cint8%2Cint8"
title="`or`(x, y: int8): int8">`or`(x, y: int8): int8</a></li>
<li><a class="reference" href="#or%2Cint16%2Cint16"
title="`or`(x, y: int16): int16">`or`(x, y: int16): int16</a></li>
<li><a class="reference" href="#or%2Cint32%2Cint32"
title="`or`(x, y: int32): int32">`or`(x, y: int32): int32</a></li>
<li><a class="reference" href="#or%2Cint64%2Cint64"
title="`or`(x, y: int64): int64">`or`(x, y: int64): int64</a></li>
<li><a class="reference" href="#or%2Cuint%2Cuint"
title="`or`(x, y: uint): uint">`or`(x, y: uint): uint</a></li>
<li><a class="reference" href="#or%2Cuint8%2Cuint8"
title="`or`(x, y: uint8): uint8">`or`(x, y: uint8): uint8</a></li>
<li><a class="reference" href="#or%2Cuint16%2Cuint16"
title="`or`(x, y: uint16): uint16">`or`(x, y: uint16): uint16</a></li>
<li><a class="reference" href="#or%2Cuint32%2Cuint32"
title="`or`(x, y: uint32): uint32">`or`(x, y: uint32): uint32</a></li>
<li><a class="reference" href="#or%2Cuint64%2Cuint64"
title="`or`(x, y: uint64): uint64">`or`(x, y: uint64): uint64</a></li>
</ul>
<ul class="simple nested-toc-section">copyMem
<li><a class="reference" href="#copyMem%2Cpointer%2Cpointer%2CNatural"
title="copyMem(dest, source: pointer; size: Natural)">copyMem(dest, source: pointer; size: Natural)</a></li>
</ul>
<ul class="simple nested-toc-section">gcInvariant
<li><a class="reference" href="#gcInvariant"
title="gcInvariant()">gcInvariant()</a></li>
</ul>
<ul class="simple nested-toc-section">GC_enable
<li><a class="reference" href="#GC_enable"
title="GC_enable()">GC_enable()</a></li>
</ul>
<ul class="simple nested-toc-section">is
<li><a class="reference" href="#is%2CT%2CS"
title="`is`[T, S](x: T; y: S): bool">`is`[T, S](x: T; y: S): bool</a></li>
</ul>
<ul class="simple nested-toc-section">realloc0Impl
<li><a class="reference" href="#realloc0Impl%2Cpointer%2CNatural%2CNatural"
title="realloc0Impl(p: pointer; oldSize, newSize: Natural): pointer">realloc0Impl(p: pointer; oldSize, newSize: Natural): pointer</a></li>
</ul>
<ul class="simple nested-toc-section">getStackTrace
<li><a class="reference" href="#getStackTrace"
title="getStackTrace(): string">getStackTrace(): string</a></li>
<li><a class="reference" href="#getStackTrace%2Cref.Exception"
title="getStackTrace(e: ref Exception): string">getStackTrace(e: ref Exception): string</a></li>
</ul>
<ul class="simple nested-toc-section">find
<li><a class="reference" href="#find%2CT%2CS"
title="find[T, S](a: T; item: S): int">find[T, S](a: T; item: S): int</a></li>
</ul>
<ul class="simple nested-toc-section">pred
<li><a class="reference" href="#pred%2CT%2Cint"
title="pred[T: Ordinal](x: T; y = 1): T">pred[T: Ordinal](x: T; y = 1): T</a></li>
</ul>
<ul class="simple nested-toc-section">not
<li><a class="reference" href="#not%2Cbool"
title="`not`(x: bool): bool">`not`(x: bool): bool</a></li>
<li><a class="reference" href="#not%2Ctypedesc"
title="`not`(a: typedesc): typedesc">`not`(a: typedesc): typedesc</a></li>
<li><a class="reference" href="#not%2Cint"
title="`not`(x: int): int">`not`(x: int): int</a></li>
<li><a class="reference" href="#not%2Cint8"
title="`not`(x: int8): int8">`not`(x: int8): int8</a></li>
<li><a class="reference" href="#not%2Cint16"
title="`not`(x: int16): int16">`not`(x: int16): int16</a></li>
<li><a class="reference" href="#not%2Cint32"
title="`not`(x: int32): int32">`not`(x: int32): int32</a></li>
<li><a class="reference" href="#not%2Cint64"
title="`not`(x: int64): int64">`not`(x: int64): int64</a></li>
<li><a class="reference" href="#not%2Cuint"
title="`not`(x: uint): uint">`not`(x: uint): uint</a></li>
<li><a class="reference" href="#not%2Cuint8"
title="`not`(x: uint8): uint8">`not`(x: uint8): uint8</a></li>
<li><a class="reference" href="#not%2Cuint16"
title="`not`(x: uint16): uint16">`not`(x: uint16): uint16</a></li>
<li><a class="reference" href="#not%2Cuint32"
title="`not`(x: uint32): uint32">`not`(x: uint32): uint32</a></li>
<li><a class="reference" href="#not%2Cuint64"
title="`not`(x: uint64): uint64">`not`(x: uint64): uint64</a></li>
</ul>
<ul class="simple nested-toc-section">zeroMem
<li><a class="reference" href="#zeroMem%2Cpointer%2CNatural"
title="zeroMem(p: pointer; size: Natural)">zeroMem(p: pointer; size: Natural)</a></li>
</ul>
<ul class="simple nested-toc-section">getFreeMem
<li><a class="reference" href="#getFreeMem"
title="getFreeMem(): int">getFreeMem(): int</a></li>
</ul>
<ul class="simple nested-toc-section">shl
<li><a class="reference" href="#shl%2Cint%2CSomeInteger"
title="`shl`(x: int; y: SomeInteger): int">`shl`(x: int; y: SomeInteger): int</a></li>
<li><a class="reference" href="#shl%2Cint8%2CSomeInteger"
title="`shl`(x: int8; y: SomeInteger): int8">`shl`(x: int8; y: SomeInteger): int8</a></li>
<li><a class="reference" href="#shl%2Cint16%2CSomeInteger"
title="`shl`(x: int16; y: SomeInteger): int16">`shl`(x: int16; y: SomeInteger): int16</a></li>
<li><a class="reference" href="#shl%2Cint32%2CSomeInteger"
title="`shl`(x: int32; y: SomeInteger): int32">`shl`(x: int32; y: SomeInteger): int32</a></li>
<li><a class="reference" href="#shl%2Cint64%2CSomeInteger"
title="`shl`(x: int64; y: SomeInteger): int64">`shl`(x: int64; y: SomeInteger): int64</a></li>
<li><a class="reference" href="#shl%2Cuint%2CSomeInteger"
title="`shl`(x: uint; y: SomeInteger): uint">`shl`(x: uint; y: SomeInteger): uint</a></li>
<li><a class="reference" href="#shl%2Cuint8%2CSomeInteger"
title="`shl`(x: uint8; y: SomeInteger): uint8">`shl`(x: uint8; y: SomeInteger): uint8</a></li>
<li><a class="reference" href="#shl%2Cuint16%2CSomeInteger"
title="`shl`(x: uint16; y: SomeInteger): uint16">`shl`(x: uint16; y: SomeInteger): uint16</a></li>
<li><a class="reference" href="#shl%2Cuint32%2CSomeInteger"
title="`shl`(x: uint32; y: SomeInteger): uint32">`shl`(x: uint32; y: SomeInteger): uint32</a></li>
<li><a class="reference" href="#shl%2Cuint64%2CSomeInteger"
title="`shl`(x: uint64; y: SomeInteger): uint64">`shl`(x: uint64; y: SomeInteger): uint64</a></li>
</ul>
<ul class="simple nested-toc-section">[]
<li><a class="reference" href="#%5B%5D%2CT%2CI"
title="`[]`[I: Ordinal; T](a: T; i: I): T">`[]`[I: Ordinal; T](a: T; i: I): T</a></li>
<li><a class="reference" href="#%5B%5D%2Cstring%2CHSlice%5BT%2CU%5D"
title="`[]`[T, U](s: string; x: HSlice[T, U]): string">`[]`[T, U](s: string; x: HSlice[T, U]): string</a></li>
<li><a class="reference" href="#%5B%5D%2Carray%5BIdx%2CT%5D%2CHSlice%5BU%2CV%5D"
title="`[]`[Idx, T, U, V](a: array[Idx, T]; x: HSlice[U, V]): seq[T]">`[]`[Idx, T, U, V](a: array[Idx, T]; x: HSlice[U, V]): seq[T]</a></li>
<li><a class="reference" href="#%5B%5D%2CopenArray%5BT%5D%2CHSlice%5BU%2CV%5D"
title="`[]`[T, U, V](s: openArray[T]; x: HSlice[U, V]): seq[T]">`[]`[T, U, V](s: openArray[T]; x: HSlice[U, V]): seq[T]</a></li>
<li><a class="reference" href="#%5B%5D%2CopenArray%5BT%5D%2CBackwardsIndex"
title="`[]`[T](s: openArray[T]; i: BackwardsIndex): T">`[]`[T](s: openArray[T]; i: BackwardsIndex): T</a></li>
<li><a class="reference" href="#%5B%5D%2Carray%5BIdx%2CT%5D%2CBackwardsIndex"
title="`[]`[Idx, T](a: array[Idx, T]; i: BackwardsIndex): T">`[]`[Idx, T](a: array[Idx, T]; i: BackwardsIndex): T</a></li>
<li><a class="reference" href="#%5B%5D%2Cstring%2CBackwardsIndex"
title="`[]`(s: string; i: BackwardsIndex): char">`[]`(s: string; i: BackwardsIndex): char</a></li>
<li><a class="reference" href="#%5B%5D%2CopenArray%5BT%5D%2CBackwardsIndex_2"
title="`[]`[T](s: var openArray[T]; i: BackwardsIndex): var T">`[]`[T](s: var openArray[T]; i: BackwardsIndex): var T</a></li>
<li><a class="reference" href="#%5B%5D%2Carray%5BIdx%2CT%5D%2CBackwardsIndex_2"
title="`[]`[Idx, T](a: var array[Idx, T]; i: BackwardsIndex): var T">`[]`[Idx, T](a: var array[Idx, T]; i: BackwardsIndex): var T</a></li>
<li><a class="reference" href="#%5B%5D%2Cstring%2CBackwardsIndex_2"
title="`[]`(s: var string; i: BackwardsIndex): var char">`[]`(s: var string; i: BackwardsIndex): var char</a></li>
</ul>
<ul class="simple nested-toc-section">isNotForeign
<li><a class="reference" href="#isNotForeign%2CForeignCell"
title="isNotForeign(x: ForeignCell): bool">isNotForeign(x: ForeignCell): bool</a></li>
</ul>
<ul class="simple nested-toc-section">alignof
<li><a class="reference" href="#alignof%2CT"
title="alignof[T](x: T): int">alignof[T](x: T): int</a></li>
<li><a class="reference" href="#alignof%2Ctypedesc"
title="alignof(x: typedesc): int">alignof(x: typedesc): int</a></li>
</ul>
<ul class="simple nested-toc-section">GC_disableMarkAndSweep
<li><a class="reference" href="#GC_disableMarkAndSweep"
title="GC_disableMarkAndSweep()">GC_disableMarkAndSweep()</a></li>
</ul>
<ul class="simple nested-toc-section">rawEnv
<li><a class="reference" href="#rawEnv%2CT"
title="rawEnv[T: proc](x: T): pointer">rawEnv[T: proc](x: T): pointer</a></li>
</ul>
<ul class="simple nested-toc-section">new
<li><a class="reference" href="#new%2Cref.T%2Cproc%28ref.T%29"
title="new[T](a: var ref T; finalizer: proc (x: ref T) {.nimcall.})">new[T](a: var ref T; finalizer: proc (x: ref T) {.nimcall.})</a></li>
<li><a class="reference" href="#new%2Cref.T"
title="new[T](a: var ref T)">new[T](a: var ref T)</a></li>
<li><a class="reference" href="#new%2Ctypedesc"
title="new(t: typedesc): auto">new(t: typedesc): auto</a></li>
</ul>
<ul class="simple nested-toc-section">repr
<li><a class="reference" href="#repr%2CT"
title="repr[T](x: T): string">repr[T](x: T): string</a></li>
</ul>
<ul class="simple nested-toc-section">high
<li><a class="reference" href="#high%2CT"
title="high[T: Ordinal | enum | range](x: T): T">high[T: Ordinal | enum | range](x: T): T</a></li>
<li><a class="reference" href="#high%2Ctypedesc%5BT%5D"
title="high[T: Ordinal | enum | range](x: typedesc[T]): T">high[T: Ordinal | enum | range](x: typedesc[T]): T</a></li>
<li><a class="reference" href="#high%2CopenArray%5BT%5D"
title="high[T](x: openArray[T]): int">high[T](x: openArray[T]): int</a></li>
<li><a class="reference" href="#high%2Carray%5BI%2CT%5D"
title="high[I, T](x: array[I, T]): I">high[I, T](x: array[I, T]): I</a></li>
<li><a class="reference" href="#high%2Ctypedesc%5Barray%5BI%2CT%5D%5D"
title="high[I, T](x: typedesc[array[I, T]]): I">high[I, T](x: typedesc[array[I, T]]): I</a></li>
<li><a class="reference" href="#high%2Ccstring"
title="high(x: cstring): int">high(x: cstring): int</a></li>
<li><a class="reference" href="#high%2Cstring"
title="high(x: string): int">high(x: string): int</a></li>
<li><a class="reference" href="#high%2Ctypedesc%5BSomeFloat%5D"
title="high(T: typedesc[SomeFloat]): T:type">high(T: typedesc[SomeFloat]): T:type</a></li>
</ul>
<ul class="simple nested-toc-section"><
<li><a class="reference" href="#%3C%2CEnum%2CEnum"
title="`&lt;`[Enum: enum](x, y: Enum): bool">`&lt;`[Enum: enum](x, y: Enum): bool</a></li>
<li><a class="reference" href="#%3C%2Cstring%2Cstring"
title="`&lt;`(x, y: string): bool">`&lt;`(x, y: string): bool</a></li>
<li><a class="reference" href="#%3C%2Cchar%2Cchar"
title="`&lt;`(x, y: char): bool">`&lt;`(x, y: char): bool</a></li>
<li><a class="reference" href="#%3C%2Cset%5BT%5D%2Cset%5BT%5D"
title="`&lt;`[T](x, y: set[T]): bool">`&lt;`[T](x, y: set[T]): bool</a></li>
<li><a class="reference" href="#%3C%2Cbool%2Cbool"
title="`&lt;`(x, y: bool): bool">`&lt;`(x, y: bool): bool</a></li>
<li><a class="reference" href="#%3C%2Cref.T%2Cref.T"
title="`&lt;`[T](x, y: ref T): bool">`&lt;`[T](x, y: ref T): bool</a></li>
<li><a class="reference" href="#%3C%2Cptr.T%2Cptr.T"
title="`&lt;`[T](x, y: ptr T): bool">`&lt;`[T](x, y: ptr T): bool</a></li>
<li><a class="reference" href="#%3C%2Cpointer%2Cpointer"
title="`&lt;`(x, y: pointer): bool">`&lt;`(x, y: pointer): bool</a></li>
<li><a class="reference" href="#%3C%2Cint%2Cint"
title="`&lt;`(x, y: int): bool">`&lt;`(x, y: int): bool</a></li>
<li><a class="reference" href="#%3C%2Cint8%2Cint8"
title="`&lt;`(x, y: int8): bool">`&lt;`(x, y: int8): bool</a></li>
<li><a class="reference" href="#%3C%2Cint16%2Cint16"
title="`&lt;`(x, y: int16): bool">`&lt;`(x, y: int16): bool</a></li>
<li><a class="reference" href="#%3C%2Cint32%2Cint32"
title="`&lt;`(x, y: int32): bool">`&lt;`(x, y: int32): bool</a></li>
<li><a class="reference" href="#%3C%2Cint64%2Cint64"
title="`&lt;`(x, y: int64): bool">`&lt;`(x, y: int64): bool</a></li>
<li><a class="reference" href="#%3C%2Cuint%2Cuint"
title="`&lt;`(x, y: uint): bool">`&lt;`(x, y: uint): bool</a></li>
<li><a class="reference" href="#%3C%2Cuint8%2Cuint8"
title="`&lt;`(x, y: uint8): bool">`&lt;`(x, y: uint8): bool</a></li>
<li><a class="reference" href="#%3C%2Cuint16%2Cuint16"
title="`&lt;`(x, y: uint16): bool">`&lt;`(x, y: uint16): bool</a></li>
<li><a class="reference" href="#%3C%2Cuint32%2Cuint32"
title="`&lt;`(x, y: uint32): bool">`&lt;`(x, y: uint32): bool</a></li>
<li><a class="reference" href="#%3C%2Cuint64%2Cuint64"
title="`&lt;`(x, y: uint64): bool">`&lt;`(x, y: uint64): bool</a></li>
<li><a class="reference" href="#%3C%2Cfloat32%2Cfloat32"
title="`&lt;`(x, y: float32): bool">`&lt;`(x, y: float32): bool</a></li>
<li><a class="reference" href="#%3C%2Cfloat%2Cfloat"
title="`&lt;`(x, y: float): bool">`&lt;`(x, y: float): bool</a></li>
<li><a class="reference" href="#%3C%2CT%2CT"
title="`&lt;`[T: tuple](x, y: T): bool">`&lt;`[T: tuple](x, y: T): bool</a></li>
</ul>
<ul class="simple nested-toc-section">succ
<li><a class="reference" href="#succ%2CT%2Cint"
title="succ[T: Ordinal](x: T; y = 1): T">succ[T: Ordinal](x: T; y = 1): T</a></li>
</ul>
<ul class="simple nested-toc-section">max
<li><a class="reference" href="#max%2Cint%2Cint"
title="max(x, y: int): int">max(x, y: int): int</a></li>
<li><a class="reference" href="#max%2Cint8%2Cint8"
title="max(x, y: int8): int8">max(x, y: int8): int8</a></li>
<li><a class="reference" href="#max%2Cint16%2Cint16"
title="max(x, y: int16): int16">max(x, y: int16): int16</a></li>
<li><a class="reference" href="#max%2Cint32%2Cint32"
title="max(x, y: int32): int32">max(x, y: int32): int32</a></li>
<li><a class="reference" href="#max%2Cint64%2Cint64"
title="max(x, y: int64): int64">max(x, y: int64): int64</a></li>
<li><a class="reference" href="#max%2CopenArray%5BT%5D"
title="max[T](x: openArray[T]): T">max[T](x: openArray[T]): T</a></li>
<li><a class="reference" href="#max%2Cfloat32%2Cfloat32"
title="max(x, y: float32): float32">max(x, y: float32): float32</a></li>
<li><a class="reference" href="#max%2Cfloat64%2Cfloat64"
title="max(x, y: float64): float64">max(x, y: float64): float64</a></li>
<li><a class="reference" href="#max%2CT%2CT"
title="max[T: not SomeFloat](x, y: T): T">max[T: not SomeFloat](x, y: T): T</a></li>
</ul>
<ul class="simple nested-toc-section">iterToProc
<li><a class="reference" href="#iterToProc%2Ctyped%2Ctypedesc%2Cuntyped"
title="iterToProc(iter: typed; envType: typedesc; procName: untyped)">iterToProc(iter: typed; envType: typedesc; procName: untyped)</a></li>
</ul>
<ul class="simple nested-toc-section">tearDownForeignThreadGc
<li><a class="reference" href="#tearDownForeignThreadGc"
title="tearDownForeignThreadGc()">tearDownForeignThreadGc()</a></li>
</ul>
<ul class="simple nested-toc-section">=
<li><a class="reference" href="#%3D%2CT%2CT"
title="`=`[T](dest: var T; src: T)">`=`[T](dest: var T; src: T)</a></li>
</ul>
<ul class="simple nested-toc-section">default
<li><a class="reference" href="#default%2Ctypedesc"
title="default(T: typedesc): T:type">default(T: typedesc): T:type</a></li>
</ul>
<ul class="simple nested-toc-section">GC_fullCollect
<li><a class="reference" href="#GC_fullCollect"
title="GC_fullCollect()">GC_fullCollect()</a></li>
</ul>
<ul class="simple nested-toc-section">addQuoted
<li><a class="reference" href="#addQuoted%2Cstring%2CT"
title="addQuoted[T](s: var string; x: T)">addQuoted[T](s: var string; x: T)</a></li>
</ul>
<ul class="simple nested-toc-section">nimGC_setStackBottom
<li><a class="reference" href="#nimGC_setStackBottom%2Cpointer"
title="nimGC_setStackBottom(theStackBottom: pointer)">nimGC_setStackBottom(theStackBottom: pointer)</a></li>
</ul>
<ul class="simple nested-toc-section">getOccupiedMem
<li><a class="reference" href="#getOccupiedMem"
title="getOccupiedMem(): int">getOccupiedMem(): int</a></li>
</ul>
<ul class="simple nested-toc-section">toU32
<li><a class="reference" href="#toU32%2Cint64"
title="toU32(x: int64): int32">toU32(x: int64): int32</a></li>
</ul>
<ul class="simple nested-toc-section">setFrame
<li><a class="reference" href="#setFrame%2CPFrame"
title="setFrame(s: PFrame)">setFrame(s: PFrame)</a></li>
</ul>
<ul class="simple nested-toc-section">atomicInc
<li><a class="reference" href="#atomicInc%2Cint%2Cint"
title="atomicInc(memLoc: var int; x: int = 1): int">atomicInc(memLoc: var int; x: int = 1): int</a></li>
</ul>
<ul class="simple nested-toc-section">ord
<li><a class="reference" href="#ord%2CT"
title="ord[T: Ordinal | enum](x: T): int">ord[T: Ordinal | enum](x: T): int</a></li>
</ul>
<ul class="simple nested-toc-section">*=
<li><a class="reference" href="#%2A%3D%2CT%2CT"
title="`*=`[T: SomeInteger](x: var T; y: T)">`*=`[T: SomeInteger](x: var T; y: T)</a></li>
<li><a class="reference" href="#%2A%3D%2CT%2CT_2"
title="`*=`[T: float | float32 | float64](x: var T; y: T)">`*=`[T: float | float32 | float64](x: var T; y: T)</a></li>
</ul>
<ul class="simple nested-toc-section">GC_disable
<li><a class="reference" href="#GC_disable"
title="GC_disable()">GC_disable()</a></li>
</ul>
<ul class="simple nested-toc-section">createShared
<li><a class="reference" href="#createShared%2Ctypedesc"
title="createShared(T: typedesc; size = 1.Positive): ptr T:type">createShared(T: typedesc; size = 1.Positive): ptr T:type</a></li>
</ul>
<ul class="simple nested-toc-section">stackTraceAvailable
<li><a class="reference" href="#stackTraceAvailable"
title="stackTraceAvailable(): bool">stackTraceAvailable(): bool</a></li>
</ul>
<ul class="simple nested-toc-section">shallowCopy
<li><a class="reference" href="#shallowCopy%2CT%2CT"
title="shallowCopy[T](x: var T; y: T)">shallowCopy[T](x: var T; y: T)</a></li>
</ul>
<ul class="simple nested-toc-section">GC_getStatistics
<li><a class="reference" href="#GC_getStatistics"
title="GC_getStatistics(): string">GC_getStatistics(): string</a></li>
</ul>
<ul class="simple nested-toc-section">swap
<li><a class="reference" href="#swap%2CT%2CT"
title="swap[T](a, b: var T)">swap[T](a, b: var T)</a></li>
</ul>
<ul class="simple nested-toc-section">toFloat
<li><a class="reference" href="#toFloat%2Cint"
title="toFloat(i: int): float">toFloat(i: int): float</a></li>
</ul>
<ul class="simple nested-toc-section">create
<li><a class="reference" href="#create%2Ctypedesc"
title="create(T: typedesc; size = 1.Positive): ptr T:type">create(T: typedesc; size = 1.Positive): ptr T:type</a></li>
</ul>
<ul class="simple nested-toc-section">slurp
<li><a class="reference" href="#slurp%2Cstring"
title="slurp(filename: string): string">slurp(filename: string): string</a></li>
</ul>
<ul class="simple nested-toc-section">=destroy
<li><a class="reference" href="#%3Ddestroy%2CT"
title="`=destroy`[T](x: var T)">`=destroy`[T](x: var T)</a></li>
</ul>
<ul class="simple nested-toc-section">createU
<li><a class="reference" href="#createU%2Ctypedesc"
title="createU(T: typedesc; size = 1.Positive): ptr T:type">createU(T: typedesc; size = 1.Positive): ptr T:type</a></li>
</ul>
<ul class="simple nested-toc-section">popGcFrame
<li><a class="reference" href="#popGcFrame"
title="popGcFrame()">popGcFrame()</a></li>
</ul>
<ul class="simple nested-toc-section">astToStr
<li><a class="reference" href="#astToStr%2CT"
title="astToStr[T](x: T): string">astToStr[T](x: T): string</a></li>
</ul>
<ul class="simple nested-toc-section">getAllocStats
<li><a class="reference" href="#getAllocStats"
title="getAllocStats(): AllocStats">getAllocStats(): AllocStats</a></li>
</ul>
<ul class="simple nested-toc-section">addFloat
<li><a class="reference" href="#addFloat%2Cstring%2Cfloat"
title="addFloat(result: var string; x: float)">addFloat(result: var string; x: float)</a></li>
</ul>
<ul class="simple nested-toc-section">-%
<li><a class="reference" href="#-%25%2Cint%2Cint"
title="`-%`(x, y: int): int">`-%`(x, y: int): int</a></li>
<li><a class="reference" href="#-%25%2Cint8%2Cint8"
title="`-%`(x, y: int8): int8">`-%`(x, y: int8): int8</a></li>
<li><a class="reference" href="#-%25%2Cint16%2Cint16"
title="`-%`(x, y: int16): int16">`-%`(x, y: int16): int16</a></li>
<li><a class="reference" href="#-%25%2Cint32%2Cint32"
title="`-%`(x, y: int32): int32">`-%`(x, y: int32): int32</a></li>
<li><a class="reference" href="#-%25%2Cint64%2Cint64"
title="`-%`(x, y: int64): int64">`-%`(x, y: int64): int64</a></li>
</ul>
<ul class="simple nested-toc-section">/=
<li><a class="reference" href="#%2F%3D%2Cfloat64%2Cfloat64"
title="`/=`(x: var float64; y: float64)">`/=`(x: var float64; y: float64)</a></li>
<li><a class="reference" href="#%2F%3D%2CT%2CT"
title="`/=`[T: float | float32](x: var T; y: T)">`/=`[T: float | float32](x: var T; y: T)</a></li>
</ul>
<ul class="simple nested-toc-section">abs
<li><a class="reference" href="#abs%2CT"
title="abs[T: float64 | float32](x: T): T">abs[T: float64 | float32](x: T): T</a></li>
<li><a class="reference" href="#abs%2Cint"
title="abs(x: int): int">abs(x: int): int</a></li>
<li><a class="reference" href="#abs%2Cint8"
title="abs(x: int8): int8">abs(x: int8): int8</a></li>
<li><a class="reference" href="#abs%2Cint16"
title="abs(x: int16): int16">abs(x: int16): int16</a></li>
<li><a class="reference" href="#abs%2Cint32"
title="abs(x: int32): int32">abs(x: int32): int32</a></li>
<li><a class="reference" href="#abs%2Cint64"
title="abs(x: int64): int64">abs(x: int64): int64</a></li>
</ul>
<ul class="simple nested-toc-section">==
<li><a class="reference" href="#%3D%3D%2CEnum%2CEnum"
title="`==`[Enum: enum](x, y: Enum): bool">`==`[Enum: enum](x, y: Enum): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cpointer%2Cpointer"
title="`==`(x, y: pointer): bool">`==`(x, y: pointer): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cstring%2Cstring"
title="`==`(x, y: string): bool">`==`(x, y: string): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cchar%2Cchar"
title="`==`(x, y: char): bool">`==`(x, y: char): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cbool%2Cbool"
title="`==`(x, y: bool): bool">`==`(x, y: bool): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cset%5BT%5D%2Cset%5BT%5D"
title="`==`[T](x, y: set[T]): bool">`==`[T](x, y: set[T]): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cref.T%2Cref.T"
title="`==`[T](x, y: ref T): bool">`==`[T](x, y: ref T): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cptr.T%2Cptr.T"
title="`==`[T](x, y: ptr T): bool">`==`[T](x, y: ptr T): bool</a></li>
<li><a class="reference" href="#%3D%3D%2CT%2CT"
title="`==`[T: proc](x, y: T): bool">`==`[T: proc](x, y: T): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cint%2Cint"
title="`==`(x, y: int): bool">`==`(x, y: int): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cint8%2Cint8"
title="`==`(x, y: int8): bool">`==`(x, y: int8): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cint16%2Cint16"
title="`==`(x, y: int16): bool">`==`(x, y: int16): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cint32%2Cint32"
title="`==`(x, y: int32): bool">`==`(x, y: int32): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cint64%2Cint64"
title="`==`(x, y: int64): bool">`==`(x, y: int64): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cuint%2Cuint"
title="`==`(x, y: uint): bool">`==`(x, y: uint): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cuint8%2Cuint8"
title="`==`(x, y: uint8): bool">`==`(x, y: uint8): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cuint16%2Cuint16"
title="`==`(x, y: uint16): bool">`==`(x, y: uint16): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cuint32%2Cuint32"
title="`==`(x, y: uint32): bool">`==`(x, y: uint32): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cuint64%2Cuint64"
title="`==`(x, y: uint64): bool">`==`(x, y: uint64): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Carray%5BI%2CT%5D%2Carray%5BI%2CT%5D"
title="`==`[I, T](x, y: array[I, T]): bool">`==`[I, T](x, y: array[I, T]): bool</a></li>
<li><a class="reference" href="#%3D%3D%2CopenArray%5BT%5D%2CopenArray%5BT%5D"
title="`==`[T](x, y: openArray[T]): bool">`==`[T](x, y: openArray[T]): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cseq%5BT%5D%2Cseq%5BT%5D"
title="`==`[T](x, y: seq[T]): bool">`==`[T](x, y: seq[T]): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cfloat32%2Cfloat32"
title="`==`(x, y: float32): bool">`==`(x, y: float32): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cfloat%2Cfloat"
title="`==`(x, y: float): bool">`==`(x, y: float): bool</a></li>
<li><a class="reference" href="#%3D%3D%2CT%2CT_2"
title="`==`[T: tuple | object](x, y: T): bool">`==`[T: tuple | object](x, y: T): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Ccstring%2Ccstring"
title="`==`(x, y: cstring): bool">`==`(x, y: cstring): bool</a></li>
<li><a class="reference" href="#%3D%3D%2Cstring%2C"
title="`==`(x: string; y: type(nil) | type(nil)): bool">`==`(x: string; y: type(nil) | type(nil)): bool</a></li>
<li><a class="reference" href="#%3D%3D%2C%2Cstring"
title="`==`(x: type(nil) | type(nil); y: string): bool">`==`(x: type(nil) | type(nil); y: string): bool</a></li>
</ul>
<ul class="simple nested-toc-section">deallocCStringArray
<li><a class="reference" href="#deallocCStringArray%2CcstringArray"
title="deallocCStringArray(a: cstringArray)">deallocCStringArray(a: cstringArray)</a></li>
</ul>
<ul class="simple nested-toc-section">unsafeNew
<li><a class="reference" href="#unsafeNew%2Cref.T%2CNatural"
title="unsafeNew[T](a: var ref T; size: Natural)">unsafeNew[T](a: var ref T; size: Natural)</a></li>
</ul>
</ul>
</li>
<li>
<a class="reference reference-toplevel" href="#15" id="65">Iterators</a>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#countdown.i%2CT%2CT%2CPositive"
title="countdown[T](a, b: T; step: Positive = 1): T">countdown</a></li>
<li><a class="reference" href="#countup.i%2CT%2CT%2CPositive"
title="countup[T](a, b: T; step: Positive = 1): T">countup</a></li>
<li><a class="reference" href="#...i%2CT%2CT"
title="`..`[T](a, b: T): T">`..`</a></li>
<li><a class="reference" href="#...i%2Cint64%2Cint64"
title="`..`(a, b: int64): int64">`..`</a></li>
<li><a class="reference" href="#...i%2Cint32%2Cint32"
title="`..`(a, b: int32): int32">`..`</a></li>
<li><a class="reference" href="#...i%2Cuint64%2Cuint64"
title="`..`(a, b: uint64): uint64">`..`</a></li>
<li><a class="reference" href="#...i%2Cuint32%2Cuint32"
title="`..`(a, b: uint32): uint32">`..`</a></li>
<li><a class="reference" href="#..%3C.i%2CT%2CT"
title="`..&lt;`[T](a, b: T): T">`..&lt;`</a></li>
<li><a class="reference" href="#..%3C.i%2Cint64%2Cint64"
title="`..&lt;`(a, b: int64): int64">`..&lt;`</a></li>
<li><a class="reference" href="#..%3C.i%2Cint32%2Cint32"
title="`..&lt;`(a, b: int32): int32">`..&lt;`</a></li>
<li><a class="reference" href="#..%3C.i%2Cuint64%2Cuint64"
title="`..&lt;`(a, b: uint64): uint64">`..&lt;`</a></li>
<li><a class="reference" href="#..%3C.i%2Cuint32%2Cuint32"
title="`..&lt;`(a, b: uint32): uint32">`..&lt;`</a></li>
<li><a class="reference" href="#%7C%7C.i%2CS%2CT%2Cstaticstring"
title="`||`[S, T](a: S; b: T; annotation: static string = &quot;parallel for&quot;): T">`||`</a></li>
<li><a class="reference" href="#%7C%7C.i%2CS%2CT%2CPositive%2Cstaticstring"
title="`||`[S, T](a: S; b: T; step: Positive;
annotation: static string = &quot;parallel for&quot;): T">`||`</a></li>
</ul>
</li>
<li>
<a class="reference reference-toplevel" href="#17" id="67">Macros</a>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#varargsLen.m%2Cvarargs%5Buntyped%5D"
title="varargsLen(x: varargs[untyped]): int">varargsLen</a></li>
</ul>
</li>
<li>
<a class="reference reference-toplevel" href="#18" id="68">Templates</a>
<ul class="simple simple-toc-section">
<li><a class="reference" href="#%21%3D.t%2Cuntyped%2Cuntyped"
title="`!=`(x, y: untyped): untyped">`!=`</a></li>
<li><a class="reference" href="#%3E%3D.t%2Cuntyped%2Cuntyped"
title="`&gt;=`(x, y: untyped): untyped">`&gt;=`</a></li>
<li><a class="reference" href="#%3E.t%2Cuntyped%2Cuntyped"
title="`&gt;`(x, y: untyped): untyped">`&gt;`</a></li>
<li><a class="reference" href="#%3E%3D%25.t%2Cuntyped%2Cuntyped"
title="`&gt;=%`(x, y: untyped): untyped">`&gt;=%`</a></li>
<li><a class="reference" href="#%3E%25.t%2Cuntyped%2Cuntyped"
title="`&gt;%`(x, y: untyped): untyped">`&gt;%`</a></li>
<li><a class="reference" href="#offsetOf.t%2Ctypedesc%5BT%5D%2Cuntyped"
title="offsetOf[T; ](t: typedesc[T]; member: untyped): int">offsetOf</a></li>
<li><a class="reference" href="#offsetOf.t%2CT%2Cuntyped"
title="offsetOf[T](value: T; member: untyped): int">offsetOf</a></li>
<li><a class="reference" href="#incl.t%2Cset%5BT%5D%2Cset%5BT%5D"
title="incl[T](x: var set[T]; y: set[T])">incl</a></li>
<li><a class="reference" href="#excl.t%2Cset%5BT%5D%2Cset%5BT%5D"
title="excl[T](x: var set[T]; y: set[T])">excl</a></li>
<li><a class="reference" href="#in.t%2Cuntyped%2Cuntyped"
title="`in`(x, y: untyped): untyped">`in`</a></li>
<li><a class="reference" href="#notin.t%2Cuntyped%2Cuntyped"
title="`notin`(x, y: untyped): untyped">`notin`</a></li>
<li><a class="reference" href="#isnot.t%2Cuntyped%2Cuntyped"
title="`isnot`(x, y: untyped): untyped">`isnot`</a></li>
<li><a class="reference" href="#unown.t%2Ctyped"
title="unown(x: typed): untyped">unown</a></li>
<li><a class="reference" href="#%3C%2F%2F%3E.t%2Cuntyped"
title="`&lt;//&gt;`(t: untyped): untyped">`&lt;//&gt;`</a></li>
<li><a class="reference" href="#disarm.t%2Ctyped"
title="disarm(x: typed)">disarm</a></li>
<li><a class="reference" href="#dumpAllocstats.t%2Cuntyped"
title="dumpAllocstats(code: untyped)">dumpAllocstats</a></li>
<li><a class="reference" href="#alloc.t%2CNatural"
title="alloc(size: Natural): pointer">alloc</a></li>
<li><a class="reference" href="#alloc0.t%2CNatural"
title="alloc0(size: Natural): pointer">alloc0</a></li>
<li><a class="reference" href="#realloc.t%2Cpointer%2CNatural"
title="realloc(p: pointer; newSize: Natural): pointer">realloc</a></li>
<li><a class="reference" href="#realloc0.t%2Cpointer%2CNatural%2CNatural"
title="realloc0(p: pointer; oldSize, newSize: Natural): pointer">realloc0</a></li>
<li><a class="reference" href="#allocShared.t%2CNatural"
title="allocShared(size: Natural): pointer">allocShared</a></li>
<li><a class="reference" href="#allocShared0.t%2CNatural"
title="allocShared0(size: Natural): pointer">allocShared0</a></li>
<li><a class="reference" href="#reallocShared.t%2Cpointer%2CNatural"
title="reallocShared(p: pointer; newSize: Natural): pointer">reallocShared</a></li>
<li><a class="reference" href="#reallocShared0.t%2Cpointer%2CNatural%2CNatural"
title="reallocShared0(p: pointer; oldSize, newSize: Natural): pointer">reallocShared0</a></li>
<li><a class="reference" href="#newException.t%2Ctypedesc%2Cstring%2Cref.Exception"
title="newException(exceptn: typedesc; message: string;
parentException: ref Exception = nil): untyped">newException</a></li>
<li><a class="reference" href="#likely.t%2Cbool"
title="likely(val: bool): bool">likely</a></li>
<li><a class="reference" href="#unlikely.t%2Cbool"
title="unlikely(val: bool): bool">unlikely</a></li>
<li><a class="reference" href="#formatErrorIndexBound.t%2CT%2CT%2CT"
title="formatErrorIndexBound[T](i, a, b: T): string">formatErrorIndexBound</a></li>
<li><a class="reference" href="#formatErrorIndexBound.t%2CT%2CT"
title="formatErrorIndexBound[T](i, n: T): string">formatErrorIndexBound</a></li>
<li><a class="reference" href="#%5E.t%2Cint"
title="`^`(x: int): BackwardsIndex">`^`</a></li>
<li><a class="reference" href="#..%5E.t%2Cuntyped%2Cuntyped"
title="`..^`(a, b: untyped): untyped">`..^`</a></li>
<li><a class="reference" href="#..%3C.t%2Cuntyped%2Cuntyped"
title="`..&lt;`(a, b: untyped): untyped">`..&lt;`</a></li>
<li><a class="reference" href="#%5B%5D.t%2Cstring%2Cint"
title="`[]`(s: string; i: int): char">`[]`</a></li>
<li><a class="reference" href="#%5B%5D%3D.t%2Cstring%2Cint%2Cchar"
title="`[]=`(s: string; i: int; val: char)">`[]=`</a></li>
<li><a class="reference" href="#%26%3D.t%2Ctyped%2Ctyped"
title="`&amp;=`(x, y: typed)">`&amp;=`</a></li>
<li><a class="reference" href="#currentSourcePath.t"
title="currentSourcePath(): string">currentSourcePath</a></li>
<li><a class="reference" href="#rangeCheck.t"
title="rangeCheck(cond)">rangeCheck</a></li>
<li><a class="reference" href="#closureScope.t%2Cuntyped"
title="closureScope(body: untyped): untyped">closureScope</a></li>
<li><a class="reference" href="#once.t%2Cuntyped"
title="once(body: untyped): untyped">once</a></li>
</ul>
</li>
<li>
<a class="reference reference-toplevel" href="#19" id="69">Exports</a>
<ul class="simple simple-toc-section">
</ul>
</li>
</ul>
</div>
<div class="nine columns" id="content">
<div id="tocRoot"></div>
<p class="module-desc"><p>The compiler depends on the System module to work properly and the System module depends on the compiler. Most of the routines listed here use special compiler magic.</p>
<p>Each module implicitly imports the System module; it must not be listed explicitly. Because of this there cannot be a user-defined module named <tt class="docutils literal"><span class="pre">system</span></tt>.</p>
<h1><a class="toc-backref" id="system-module" href="#system-module">System module</a></h1>The System module imports several separate modules, and their documentation is in separate files:<ul class="simple"><li><a class="reference external" href="iterators.html">iterators</a></li>
<li><a class="reference external" href="assertions.html">assertions</a></li>
<li><a class="reference external" href="dollars.html">dollars</a></li>
<li><a class="reference external" href="io.html">io</a></li>
<li><a class="reference external" href="widestrs.html">widestrs</a></li>
</ul>
<p>Here is a short overview of the most commonly used functions from the <tt class="docutils literal"><span class="pre">system</span></tt> module. Function names in the tables below are clickable and will take you to the full documentation of the function.</p>
<p>There are many more functions available than the ones listed in this overview. Use the table of contents on the left-hand side and/or <tt class="docutils literal"><span class="pre">Ctrl+F</span></tt> to navigate through this module.</p>
<h2><a class="toc-backref" id="system-module-strings-and-characters" href="#system-module-strings-and-characters">Strings and characters</a></h2><table border="1" class="docutils"><tr><th>Proc</th><th>Usage</th></tr>
<tr><td><a class="reference external" href="#len,string">len(s)</a></td><td>Return the length of a string</td></tr>
<tr><td><a class="reference external" href="#chr,range[]">chr(i)</a></td><td>Convert an <tt class="docutils literal"><span class="pre">int</span></tt> in the range <tt class="docutils literal"><span class="pre">0..255</span></tt> to a character</td></tr>
<tr><td><a class="reference external" href="#ord,T">ord(c)</a></td><td>Return <tt class="docutils literal"><span class="pre">int</span></tt> value of a character</td></tr>
<tr><td><a class="reference external" href="#&amp;,string,string">a &amp; b</a></td><td>Concatenate two strings</td></tr>
<tr><td><a class="reference external" href="#add,string,char">s.add(c)</a></td><td>Add character to the string</td></tr>
<tr><td><a class="reference external" href="dollars.html">$</a></td><td>Convert various types to string</td></tr>
</table><p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="strutils.html">strutils module</a> for common string functions</li>
<li><a class="reference external" href="strformat.html">strformat module</a> for string interpolation and formatting</li>
<li><a class="reference external" href="unicode.html">unicode module</a> for Unicode UTF-8 handling</li>
<li><a class="reference external" href="strscans.html">strscans</a> for <tt class="docutils literal"><span class="pre">scanf</span></tt> and <tt class="docutils literal"><span class="pre">scanp</span></tt> macros, which offer easier substring extraction than regular expressions</li>
<li><a class="reference external" href="strtabs.html">strtabs module</a> for efficient hash tables (dictionaries, in some programming languages) mapping from strings to strings</li>
</ul>
<h2><a class="toc-backref" id="system-module-seqs" href="#system-module-seqs">Seqs</a></h2><table border="1" class="docutils"><tr><th>Proc</th><th>Usage</th></tr>
<tr><td><a class="reference external" href="#newSeq">newSeq</a></td><td>Create a new sequence of a given length</td></tr>
<tr><td><a class="reference external" href="#newSeqOfCap,Natural">newSeqOfCap</a></td><td>Create a new sequence with zero length and a given capacity</td></tr>
<tr><td><a class="reference external" href="#setLen,seq[T],Natural">setLen</a></td><td>Set the length of a sequence</td></tr>
<tr><td><a class="reference external" href="#len,seq[T]">len</a></td><td>Return the length of a sequence</td></tr>
<tr><td><a class="reference external" href="#@,openArray[T]">@</a></td><td>Turn an array into a sequence</td></tr>
<tr><td><a class="reference external" href="#add,seq[T],sinkT">add</a></td><td>Add an item to the sequence</td></tr>
<tr><td><a class="reference external" href="#insert,seq[T],sinkT">insert</a></td><td>Insert an item at a specific position</td></tr>
<tr><td><a class="reference external" href="#delete,seq[T],Natural">delete</a></td><td>Delete an item while preserving the order of elements (<tt class="docutils literal"><span class="pre">O(n)</span></tt> operation)</td></tr>
<tr><td><a class="reference external" href="#del,seq[T],Natural">del</a></td><td><tt class="docutils literal"><span class="pre">O(1)</span></tt> removal, doesn't preserve the order</td></tr>
<tr><td><a class="reference external" href="#pop,seq[T]">pop</a></td><td>Remove and return last item of a sequence</td></tr>
<tr><td><a class="reference external" href="#&amp;,seq[T],seq[T]">x &amp; y</a></td><td>Concatenate two sequences</td></tr>
<tr><td><a class="reference external" href="#[],openArray[T],HSlice[U,V]">x[a .. b]</a></td><td>Slice of a sequence (both ends included)</td></tr>
<tr><td><a class="reference external" href="#[],openArray[T],HSlice[U,V]">x[a .. ^b]</a></td><td>Slice of a sequence but <tt class="docutils literal"><span class="pre">b</span></tt> is a reversed index (both ends included)</td></tr>
<tr><td><a class="reference external" href="#[],openArray[T],HSlice[U,V]">x[a ..&lt; b]</a></td><td>Slice of a sequence (excluded upper bound)</td></tr>
</table><p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="sequtils.html">sequtils module</a> for operations on container types (including strings)</li>
<li><a class="reference external" href="json.html">json module</a> for a structure which allows heterogeneous members</li>
<li><a class="reference external" href="lists.html">lists module</a> for linked lists</li>
</ul>
<h2><a class="toc-backref" id="system-module-sets" href="#system-module-sets">Sets</a></h2><p>Built-in bit sets.</p>
<table border="1" class="docutils"><tr><th>Proc</th><th>Usage</th></tr>
<tr><td><a class="reference external" href="#incl,set[T],T">incl</a></td><td>Include element <tt class="docutils literal"><span class="pre">y</span></tt> in the set <tt class="docutils literal"><span class="pre">x</span></tt></td></tr>
<tr><td><a class="reference external" href="#excl,set[T],T">excl</a></td><td>Exclude element <tt class="docutils literal"><span class="pre">y</span></tt> from the set <tt class="docutils literal"><span class="pre">x</span></tt></td></tr>
<tr><td><a class="reference external" href="#card,set[T]">card</a></td><td>Return the cardinality of the set, i.e. the number of elements</td></tr>
<tr><td><a class="reference external" href="#*,set[T],set[T]">a * b</a></td><td>Intersection</td></tr>
<tr><td><a class="reference external" href="#+,set[T],set[T]">a + b</a></td><td>Union</td></tr>
<tr><td><a class="reference external" href="#-,set[T],set[T]">a - b</a></td><td>Difference</td></tr>
<tr><td><a class="reference external" href="#contains,set[T],T">contains</a></td><td>Check if an element is in the set</td></tr>
<tr><td><a class="reference external" href="#&lt;,set[T],set[T]">a &lt; b</a></td><td>Check if <tt class="docutils literal"><span class="pre">a</span></tt> is a subset of <tt class="docutils literal"><span class="pre">b</span></tt></td></tr>
</table><p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="sets.html">sets module</a> for hash sets</li>
<li><a class="reference external" href="intsets.html">intsets module</a> for efficient int sets</li>
</ul>
<h2><a class="toc-backref" id="system-module-numbers" href="#system-module-numbers">Numbers</a></h2><table border="1" class="docutils"><tr><th>Proc</th><th>Usage </th><th>Also known as (in other languages)</th></tr>
<tr><td><a class="reference external" href="#div,int,int">div</a></td><td>Integer division</td><td><tt class="docutils literal"><span class="pre">//</span></tt></td></tr>
<tr><td><a class="reference external" href="#mod,int,int">mod</a></td><td>Integer modulo (remainder)</td><td><tt class="docutils literal"><span class="pre">%</span></tt></td></tr>
<tr><td><a class="reference external" href="#shl,int,SomeInteger">shl</a></td><td>Shift left</td><td><tt class="docutils literal"><span class="pre">&lt;&lt;</span></tt></td></tr>
<tr><td><a class="reference external" href="#shr,int,SomeInteger">shr</a></td><td>Shift right</td><td><tt class="docutils literal"><span class="pre">&gt;&gt;</span></tt></td></tr>
<tr><td><a class="reference external" href="#ashr,int,SomeInteger">ashr</a></td><td>Arithmetic shift right</td><td></td></tr>
<tr><td><a class="reference external" href="#and,int,int">and</a></td><td>Bitwise <tt class="docutils literal"><span class="pre">and</span></tt></td><td><tt class="docutils literal"><span class="pre">&amp;</span></tt></td></tr>
<tr><td><a class="reference external" href="#or,int,int">or</a></td><td>Bitwise <tt class="docutils literal"><span class="pre">or</span></tt></td><td><tt class="docutils literal"><span class="pre">|</span></tt></td></tr>
<tr><td><a class="reference external" href="#xor,int,int">xor</a></td><td>Bitwise <tt class="docutils literal"><span class="pre">xor</span></tt></td><td><tt class="docutils literal"><span class="pre">^</span></tt></td></tr>
<tr><td><a class="reference external" href="#not,int">not</a></td><td>Bitwise <tt class="docutils literal"><span class="pre">not</span></tt> (complement)</td><td><tt class="docutils literal"><span class="pre">~</span></tt></td></tr>
<tr><td><a class="reference external" href="#toInt,float">toInt</a></td><td>Convert floating-point number into an <tt class="docutils literal"><span class="pre">int</span></tt></td><td></td></tr>
<tr><td><a class="reference external" href="#toFloat,int">toFloat</a></td><td>Convert an integer into a <tt class="docutils literal"><span class="pre">float</span></tt></td><td></td></tr>
</table><p><strong>See also:</strong></p>
<ul class="simple"><li><a class="reference external" href="math.html">math module</a> for mathematical operations like trigonometric functions, logarithms, square and cubic roots, etc.</li>
<li><a class="reference external" href="complex.html">complex module</a> for operations on complex numbers</li>
<li><a class="reference external" href="rationals.html">rationals module</a> for rational numbers</li>
</ul>
<h2><a class="toc-backref" id="system-module-ordinals" href="#system-module-ordinals">Ordinals</a></h2><p><a class="reference external" href="#Ordinal">Ordinal type</a> includes integer, bool, character, and enumeration types, as well as their subtypes.</p>
<table border="1" class="docutils"><tr><th>Proc</th><th>Usage</th></tr>
<tr><td><a class="reference external" href="#succ,T,int">succ</a></td><td>Successor of the value</td></tr>
<tr><td><a class="reference external" href="#pred,T,int">pred</a></td><td>Predecessor of the value</td></tr>
<tr><td><a class="reference external" href="#inc,T,int">inc</a></td><td>Increment the ordinal</td></tr>
<tr><td><a class="reference external" href="#dec,T,int">dec</a></td><td>Decrement the ordinal</td></tr>
<tr><td><a class="reference external" href="#high,T">high</a></td><td>Return the highest possible value</td></tr>
<tr><td><a class="reference external" href="#low,T">low</a></td><td>Return the lowest possible value</td></tr>
<tr><td><a class="reference external" href="#ord,T">ord</a></td><td>Return <tt class="docutils literal"><span class="pre">int</span></tt> value of an ordinal value</td></tr>
</table>
<h2><a class="toc-backref" id="system-module-misc" href="#system-module-misc">Misc</a></h2><table border="1" class="docutils"><tr><th>Proc</th><th>Usage</th></tr>
<tr><td><a class="reference external" href="#is,T,S">is</a></td><td>Check if two arguments are of the same type</td></tr>
<tr><td><a class="reference external" href="#isnot.t,untyped,untyped">isnot</a></td><td>Negated version of <tt class="docutils literal"><span class="pre">is</span></tt></td></tr>
<tr><td><a class="reference external" href="#!%3D.t,untyped,untyped">!=</a></td><td>Not equals</td></tr>
<tr><td><a class="reference external" href="#addr,T">addr</a></td><td>Take the address of a memory location</td></tr>
<tr><td><a class="reference external" href="#and,bool,bool">T and F</a></td><td>Boolean <tt class="docutils literal"><span class="pre">and</span></tt></td></tr>
<tr><td><a class="reference external" href="#or,bool,bool">T or F</a></td><td>Boolean <tt class="docutils literal"><span class="pre">or</span></tt></td></tr>
<tr><td><a class="reference external" href="#xor,bool,bool">T xor F</a></td><td>Boolean <tt class="docutils literal"><span class="pre">xor</span></tt> (exclusive or)</td></tr>
<tr><td><a class="reference external" href="#not,bool">not T</a></td><td>Boolean <tt class="docutils literal"><span class="pre">not</span></tt></td></tr>
<tr><td><a class="reference external" href="#^.t,int">a[^x]</a></td><td>Take the element at the reversed index <tt class="docutils literal"><span class="pre">x</span></tt></td></tr>
<tr><td><a class="reference external" href="#..,sinkT,sinkU">a .. b</a></td><td>Binary slice that constructs an interval <tt class="docutils literal"><span class="pre">[a, b]</span></tt></td></tr>
<tr><td><a class="reference external" href="#..^.t,untyped,untyped">a ..^ b</a></td><td>Interval <tt class="docutils literal"><span class="pre">[a, b]</span></tt> but <tt class="docutils literal"><span class="pre">b</span></tt> as reversed index</td></tr>
<tr><td><a class="reference external" href="#..&lt;.t,untyped,untyped">a ..&lt; b</a></td><td>Interval <tt class="docutils literal"><span class="pre">[a, b)</span></tt> (excluded upper bound)</td></tr>
<tr><td><a class="reference external" href="#runnableExamples,string,untyped">runnableExamples</a></td><td>Create testable documentation</td></tr>
</table></p>
<div class="section" id="6">
<h1><a class="toc-backref" href="#6">Imports</a></h1>
<dl class="item">
<a class="reference external" href="since.html">since</a>, <a class="reference external" href="ansi_c.html">ansi_c</a>, <a class="reference external" href="memory.html">memory</a>, <a class="reference external" href="assertions.html">assertions</a>, <a class="reference external" href="iterators.html">iterators</a>, <a class="reference external" href="dollars.html">dollars</a>, <a class="reference external" href="miscdollars.html">miscdollars</a>, <a class="reference external" href="stacktraces.html">stacktraces</a>, <a class="reference external" href="formatfloat.html">formatfloat</a>, <a class="reference external" href="widestrs.html">widestrs</a>, <a class="reference external" href="io.html">io</a>
</dl></div>
<div class="section" id="7">
<h1><a class="toc-backref" href="#7">Types</a></h1>
<dl class="item">
<a id="float"></a>
<dt><pre><a href="system.html#float"><span class="Identifier">float</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">Float</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Default floating point type.
</dd>
<a id="float32"></a>
<dt><pre><a href="system.html#float32"><span class="Identifier">float32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">Float32</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
32 bit floating point type.
</dd>
<a id="float64"></a>
<dt><pre><a href="system.html#float64"><span class="Identifier">float64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">Float</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
64 bit floating point type.
</dd>
<a id="char"></a>
<dt><pre><a href="system.html#char"><span class="Identifier">char</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">Char</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Built-in 8 bit character type (unsigned).
</dd>
<a id="string"></a>
<dt><pre><a href="system.html#string"><span class="Identifier">string</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">String</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Built-in string type.
</dd>
<a id="cstring"></a>
<dt><pre><a href="system.html#cstring"><span class="Identifier">cstring</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">Cstring</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Built-in cstring (<em>compatible string</em>) type.
</dd>
<a id="pointer"></a>
<dt><pre><a href="system.html#pointer"><span class="Identifier">pointer</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">Pointer</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Built-in pointer type, use the <tt class="docutils literal"><span class="pre">addr</span></tt> operator to get a pointer to a variable.
</dd>
<a id="typedesc"></a>
<dt><pre><a href="system.html#typedesc"><span class="Identifier">typedesc</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">TypeDesc</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Meta type to denote a type description.
</dd>
<a id="ptr"></a>
<dt><pre><a href="system.html#ptr"><span class="Identifier">ptr</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">Pointer</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Built-in generic untraced pointer type.
</dd>
<a id="ref"></a>
<dt><pre><a href="system.html#ref"><span class="Identifier">ref</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">Pointer</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Built-in generic traced pointer type.
</dd>
<a id="void"></a>
<dt><pre><a href="system.html#void"><span class="Identifier">void</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;VoidType&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Meta type to denote the absence of any type.
</dd>
<a id="auto"></a>
<dt><pre><a href="system.html#auto"><span class="Identifier">auto</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">Expr</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Meta type for automatic type determination.
</dd>
<a id="any"></a>
<dt><pre><a href="system.html#any"><span class="Identifier">any</span></a> <span class="Other">=</span> <span class="Keyword">distinct</span> <a href="system.html#auto"><span class="Identifier">auto</span></a></pre></dt>
<dd>
Meta type for any supported type.
</dd>
<a id="untyped"></a>
<dt><pre><a href="system.html#untyped"><span class="Identifier">untyped</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">Expr</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Meta type to denote an expression that is not resolved (for templates).
</dd>
<a id="typed"></a>
<dt><pre><a href="system.html#typed"><span class="Identifier">typed</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">Stmt</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Meta type to denote an expression that is resolved (for templates).
</dd>
<a id="int"></a>
<dt><pre><a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Int&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Default integer type; bitwidth depends on architecture, but is always the same as a pointer.
</dd>
<a id="int8"></a>
<dt><pre><a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Int8&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Signed 8 bit integer type.
</dd>
<a id="int16"></a>
<dt><pre><a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Int16&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Signed 16 bit integer type.
</dd>
<a id="int32"></a>
<dt><pre><a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Int32&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Signed 32 bit integer type.
</dd>
<a id="int64"></a>
<dt><pre><a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Int64&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Signed 64 bit integer type.
</dd>
<a id="uint"></a>
<dt><pre><a href="system.html#uint"><span class="Identifier">uint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UInt&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Unsigned default integer type.
</dd>
<a id="uint8"></a>
<dt><pre><a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UInt8&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Unsigned 8 bit integer type.
</dd>
<a id="uint16"></a>
<dt><pre><a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UInt16&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Unsigned 16 bit integer type.
</dd>
<a id="uint32"></a>
<dt><pre><a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UInt32&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Unsigned 32 bit integer type.
</dd>
<a id="uint64"></a>
<dt><pre><a href="system.html#uint64"><span class="Identifier">uint64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UInt64&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Unsigned 64 bit integer type.
</dd>
<a id="bool"></a>
<dt><pre><a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Bool&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">false</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">true</span> <span class="Other">=</span> <span class="DecNumber">1</span></pre></dt>
<dd>
Built-in boolean type.
</dd>
<a id="SomeSignedInt"></a>
<dt><pre><a href="system.html#SomeSignedInt"><span class="Identifier">SomeSignedInt</span></a> <span class="Other">=</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Operator">|</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span class="Operator">|</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span class="Operator">|</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span class="Operator">|</span> <a href="system.html#int64"><span class="Identifier">int64</span></a></pre></dt>
<dd>
Type class matching all signed integer types.
</dd>
<a id="SomeUnsignedInt"></a>
<dt><pre><a href="system.html#SomeUnsignedInt"><span class="Identifier">SomeUnsignedInt</span></a> <span class="Other">=</span> <a href="system.html#uint"><span class="Identifier">uint</span></a> <span class="Operator">|</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span class="Operator">|</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span class="Operator">|</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span class="Operator">|</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a></pre></dt>
<dd>
Type class matching all unsigned integer types.
</dd>
<a id="SomeInteger"></a>
<dt><pre><a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a> <span class="Other">=</span> <a href="system.html#SomeSignedInt"><span class="Identifier">SomeSignedInt</span></a> <span class="Operator">|</span> <a href="system.html#SomeUnsignedInt"><span class="Identifier">SomeUnsignedInt</span></a></pre></dt>
<dd>
Type class matching all integer types.
</dd>
<a id="SomeOrdinal"></a>
<dt><pre><a href="system.html#SomeOrdinal"><span class="Identifier">SomeOrdinal</span></a> <span class="Other">=</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Operator">|</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span class="Operator">|</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span class="Operator">|</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span class="Operator">|</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span class="Operator">|</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span class="Operator">|</span> <span class="Keyword">enum</span> <span class="Operator">|</span> <a href="system.html#uint"><span class="Identifier">uint</span></a> <span class="Operator">|</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span class="Operator">|</span>
<a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span class="Operator">|</span>
<a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span class="Operator">|</span>
<a href="system.html#uint64"><span class="Identifier">uint64</span></a></pre></dt>
<dd>
Type class matching all ordinal types; however this includes enums with holes. See also <tt class="docutils literal"><span class="pre">Ordinal</span></tt>
</dd>
<a id="BiggestInt"></a>
<dt><pre><a href="system.html#BiggestInt"><span class="Identifier">BiggestInt</span></a> <span class="Other">=</span> <a href="system.html#int64"><span class="Identifier">int64</span></a></pre></dt>
<dd>
is an alias for the biggest signed integer type the Nim compiler supports. Currently this is <tt class="docutils literal"><span class="pre">int64</span></tt>, but it is platform-dependent in general.
</dd>
<a id="SomeFloat"></a>
<dt><pre><a href="system.html#SomeFloat"><span class="Identifier">SomeFloat</span></a> <span class="Other">=</span> <a href="system.html#float"><span class="Identifier">float</span></a> <span class="Operator">|</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span class="Operator">|</span> <a href="system.html#float64"><span class="Identifier">float64</span></a></pre></dt>
<dd>
Type class matching all floating point number types.
</dd>
<a id="SomeNumber"></a>
<dt><pre><a href="system.html#SomeNumber"><span class="Identifier">SomeNumber</span></a> <span class="Other">=</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a> <span class="Operator">|</span> <a href="system.html#SomeFloat"><span class="Identifier">SomeFloat</span></a></pre></dt>
<dd>
Type class matching all number types.
</dd>
<a id="Ordinal"></a>
<dt><pre><a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="Identifier">Ordinal</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Generic ordinal type. Includes integer, bool, character, and enumeration types as well as their subtypes. See also <tt class="docutils literal"><span class="pre">SomeOrdinal</span></tt>.
</dd>
<a id="static"></a>
<dt><pre><a href="system.html#static"><span class="Identifier">static</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Static&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Meta type representing all values that can be evaluated at compile-time.</p>
<p>The type coercion <tt class="docutils literal"><span class="pre">static(x)</span></tt> can be used to force the compile-time evaluation of the given expression <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
</dd>
<a id="type"></a>
<dt><pre><a href="system.html#type"><span class="Identifier">type</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Type&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Meta type representing the type of all type values.</p>
<p>The coercion <tt class="docutils literal"><span class="pre">type(x)</span></tt> can be used to obtain the type of the given expression <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
</dd>
<a id="TypeOfMode"></a>
<dt><pre><a href="system.html#TypeOfMode"><span class="Identifier">TypeOfMode</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">typeOfProc</span><span class="Other">,</span> <span class="Comment">## Prefer the interpretation that means `x` is a proc call.</span>
<span class="Identifier">typeOfIter</span> <span class="Comment">## Prefer the interpretation that means `x` is an iterator call.</span></pre></dt>
<dd>
Possible modes of <tt class="docutils literal"><span class="pre">typeof</span></tt>.
</dd>
<a id="range"></a>
<dt><pre><a href="system.html#range"><span class="Identifier">range</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Range&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Generic type to construct range types.
</dd>
<a id="array"></a>
<dt><pre><a href="system.html#array"><span class="Identifier">array</span></a><span class="Other">[</span><span class="Identifier">I</span><span class="Other">;</span> <span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Array&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Generic type to construct fixed-length arrays.
</dd>
<a id="openArray"></a>
<dt><pre><a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;OpenArray&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Generic type to construct open arrays. Open arrays are implemented as a pointer to the array data and a length field.
</dd>
<a id="varargs"></a>
<dt><pre><a href="system.html#varargs"><span class="Identifier">varargs</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Varargs&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Generic type to construct a varargs type.
</dd>
<a id="seq"></a>
<dt><pre><a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Seq&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Generic type to construct sequences.
</dd>
<a id="set"></a>
<dt><pre><a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Set&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Generic type to construct bit sets.
</dd>
<a id="UncheckedArray"></a>
<dt><pre><a href="system.html#UncheckedArray"><span class="Identifier">UncheckedArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UncheckedArray&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="sink"></a>
<dt><pre><a href="system.html#sink"><span class="Identifier">sink</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BuiltinType&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="lent"></a>
<dt><pre><a href="system.html#lent"><span class="Identifier">lent</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BuiltinType&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="HSlice"></a>
<dt><pre><a href="system.html#HSlice"><span class="Identifier">HSlice</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">U</span><span class="Other">]</span> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">a</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">T</span> <span class="Comment">## The lower bound (inclusive).</span>
<span class="Identifier">b</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">U</span> <span class="Comment">## The upper bound (inclusive).</span>
</pre></dt>
<dd>
&quot;Heterogeneous&quot; slice type.
</dd>
<a id="Slice"></a>
<dt><pre><a href="system.html#Slice"><span class="Identifier">Slice</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span class="Other">=</span> <a href="system.html#HSlice"><span class="Identifier">HSlice</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span></pre></dt>
<dd>
An alias for <tt class="docutils literal"><span class="pre">HSlice[T, T]</span></tt>.
</dd>
<a id="byte"></a>
<dt><pre><a href="system.html#byte"><span class="Identifier">byte</span></a> <span class="Other">=</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a></pre></dt>
<dd>
This is an alias for <tt class="docutils literal"><span class="pre">uint8</span></tt>, that is an unsigned integer, 8 bits wide.
</dd>
<a id="Natural"></a>
<dt><pre><a href="system.html#Natural"><span class="Identifier">Natural</span></a> <span class="Other">=</span> <a href="system.html#range"><span class="Identifier">range</span></a><span class="Other">[</span><span class="DecNumber">0</span> <span class="Operator">..</span> <span class="Identifier">high</span><span class="Other">(</span><a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">]</span></pre></dt>
<dd>
is an <tt class="docutils literal"><span class="pre">int</span></tt> type ranging from zero to the maximum value of an <tt class="docutils literal"><span class="pre">int</span></tt>. This type is often useful for documentation and debugging.
</dd>
<a id="Positive"></a>
<dt><pre><a href="system.html#Positive"><span class="Identifier">Positive</span></a> <span class="Other">=</span> <a href="system.html#range"><span class="Identifier">range</span></a><span class="Other">[</span><span class="DecNumber">1</span> <span class="Operator">..</span> <span class="Identifier">high</span><span class="Other">(</span><a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">]</span></pre></dt>
<dd>
is an <tt class="docutils literal"><span class="pre">int</span></tt> type ranging from one to the maximum value of an <tt class="docutils literal"><span class="pre">int</span></tt>. This type is often useful for documentation and debugging.
</dd>
<a id="RootObj"></a>
<dt><pre><a href="system.html#RootObj"><span class="Identifier">RootObj</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">inheritable</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <span class="Keyword">object</span></pre></dt>
<dd>
<p>The root of Nim's object hierarchy.</p>
<p>Objects should inherit from <tt class="docutils literal"><span class="pre">RootObj</span></tt> or one of its descendants. However, objects that have no ancestor are also allowed.</p>
</dd>
<a id="RootRef"></a>
<dt><pre><a href="system.html#RootRef"><span class="Identifier">RootRef</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <a href="system.html#RootObj"><span class="Identifier">RootObj</span></a></pre></dt>
<dd>
Reference to <tt class="docutils literal"><span class="pre">RootObj</span></tt>.
</dd>
<a id="RootEffect"></a>
<dt><pre><a href="system.html#RootEffect"><span class="Identifier">RootEffect</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">compilerproc</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#RootObj"><span class="Identifier">RootObj</span></a></pre></dt>
<dd>
<p>
Base effect class.</p>
<p>Each effect should inherit from <tt class="docutils literal"><span class="pre">RootEffect</span></tt> unless you know what you're doing.</p>
</dd>
<a id="TimeEffect"></a>
<dt><pre><a href="system.html#TimeEffect"><span class="Identifier">TimeEffect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#RootEffect"><span class="Identifier">RootEffect</span></a></pre></dt>
<dd>
Time effect.
</dd>
<a id="IOEffect"></a>
<dt><pre><a href="system.html#IOEffect"><span class="Identifier">IOEffect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#RootEffect"><span class="Identifier">RootEffect</span></a></pre></dt>
<dd>
IO effect.
</dd>
<a id="ReadIOEffect"></a>
<dt><pre><a href="system.html#ReadIOEffect"><span class="Identifier">ReadIOEffect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#IOEffect"><span class="Identifier">IOEffect</span></a></pre></dt>
<dd>
Effect describing a read IO operation.
</dd>
<a id="WriteIOEffect"></a>
<dt><pre><a href="system.html#WriteIOEffect"><span class="Identifier">WriteIOEffect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#IOEffect"><span class="Identifier">IOEffect</span></a></pre></dt>
<dd>
Effect describing a write IO operation.
</dd>
<a id="ExecIOEffect"></a>
<dt><pre><a href="system.html#ExecIOEffect"><span class="Identifier">ExecIOEffect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#IOEffect"><span class="Identifier">IOEffect</span></a></pre></dt>
<dd>
Effect describing an executing IO operation.
</dd>
<a id="StackTraceEntry"></a>
<dt><pre><a href="system.html#StackTraceEntry"><span class="Identifier">StackTraceEntry</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">procname</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#cstring"><span class="Identifier">cstring</span></a> <span class="Comment">## Name of the proc that is currently executing.</span>
<span class="Identifier">line</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Comment">## Line number of the proc that is currently executing.</span>
<span class="Identifier">filename</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#cstring"><span class="Identifier">cstring</span></a> <span class="Comment">## Filename of the proc that is currently executing.</span>
<span class="Keyword">when</span> <span class="Identifier">NimStackTraceMsgs</span><span class="Other">:</span>
<span class="Identifier">frameMsg</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span class="Comment">## When a stacktrace is generated in a given frame and</span>
<span class="Comment">## rendered at a later time, we should ensure the stacktrace</span>
<span class="Comment">## data isn't invalidated; any pointer into PFrame is</span>
<span class="Comment">## subject to being invalidated so shouldn't be stored.</span>
<span class="Keyword">when</span> <span class="Identifier">defined</span><span class="Other">(</span><span class="Identifier">nimStackTraceOverride</span><span class="Other">)</span><span class="Other">:</span>
<span class="Identifier">programCounter</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">uint</span> <span class="Comment">## Program counter - will be used to get the rest of the info,</span>
<span class="Comment">## when `$` is called on this type. We can't use</span>
<span class="Comment">## &quot;cuintptr_t&quot; in here.</span>
<span class="Identifier">procnameStr</span><span class="Operator">*</span><span class="Other">,</span> <span class="Identifier">filenameStr</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span> <span class="Comment">## GC-ed objects holding the cstrings in &quot;procname&quot; and &quot;filename&quot;</span>
</pre></dt>
<dd>
In debug mode exceptions store the stack trace that led to them. A <tt class="docutils literal"><span class="pre">StackTraceEntry</span></tt> is a single entry of the stack trace.
</dd>
<a id="Exception"></a>
<dt><pre><a href="system.html#Exception"><span class="Identifier">Exception</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Exception&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#RootObj"><span class="Identifier">RootObj</span></a>
<span class="Identifier">parent</span><span class="Operator">*</span><span class="Other">:</span> <span class="Keyword">ref</span> <a href="system.html#Exception"><span class="Identifier">Exception</span></a> <span class="Comment">## Parent exception (can be used as a stack).</span>
<span class="Identifier">name</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#cstring"><span class="Identifier">cstring</span></a> <span class="Comment">## The exception's name is its Nim identifier.</span>
<span class="Comment">## This field is filled automatically in the</span>
<span class="Comment">## ``raise`` statement.</span>
<span class="Identifier">msg</span><span class="Operator">*</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">exportc</span><span class="Other">:</span> <span class="StringLit">&quot;message&quot;</span></span><span class="Other">.}</span></span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span class="Comment">## The exception's message. Not</span>
<span class="Comment">## providing an exception message</span>
<span class="Comment">## is bad style.</span>
<span class="Keyword">when</span> <span class="Identifier">defined</span><span class="Other">(</span><span class="Identifier">js</span><span class="Other">)</span><span class="Other">:</span>
<span class="Identifier">trace</span><span class="Other">:</span> <span class="Identifier">string</span>
<span class="Keyword">else</span><span class="Other">:</span>
<span class="Identifier">trace</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="system.html#StackTraceEntry"><span class="Identifier">StackTraceEntry</span></a><span class="Other">]</span>
<span class="Identifier">up</span><span class="Other">:</span> <span class="Keyword">ref</span> <a href="system.html#Exception"><span class="Identifier">Exception</span></a>
</pre></dt>
<dd>
<p>
Base exception class.</p>
<p>Each exception has to inherit from <tt class="docutils literal"><span class="pre">Exception</span></tt>. See the full <a class="reference external" href="manual.html#exception-handling-exception-hierarchy">exception hierarchy</a>.</p>
</dd>
<a id="Defect"></a>
<dt><pre><a href="system.html#Defect"><span class="Identifier">Defect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Exception"><span class="Identifier">Exception</span></a></pre></dt>
<dd>
Abstract base class for all exceptions that Nim's runtime raises but that are strictly uncatchable as they can also be mapped to a <tt class="docutils literal"><span class="pre">quit</span></tt> / <tt class="docutils literal"><span class="pre">trap</span></tt> / <tt class="docutils literal"><span class="pre">exit</span></tt> operation.
</dd>
<a id="CatchableError"></a>
<dt><pre><a href="system.html#CatchableError"><span class="Identifier">CatchableError</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Exception"><span class="Identifier">Exception</span></a></pre></dt>
<dd>
Abstract class for all exceptions that are catchable.
</dd>
<a id="IOError"></a>
<dt><pre><a href="system.html#IOError"><span class="Identifier">IOError</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#CatchableError"><span class="Identifier">CatchableError</span></a></pre></dt>
<dd>
Raised if an IO error occurred.
</dd>
<a id="EOFError"></a>
<dt><pre><a href="system.html#EOFError"><span class="Identifier">EOFError</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#IOError"><span class="Identifier">IOError</span></a></pre></dt>
<dd>
Raised if an IO &quot;end of file&quot; error occurred.
</dd>
<a id="OSError"></a>
<dt><pre><a href="system.html#OSError"><span class="Identifier">OSError</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#CatchableError"><span class="Identifier">CatchableError</span></a>
<span class="Identifier">errorCode</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span class="Comment">## OS-defined error code describing this error.</span>
</pre></dt>
<dd>
Raised if an operating system service failed.
</dd>
<a id="LibraryError"></a>
<dt><pre><a href="system.html#LibraryError"><span class="Identifier">LibraryError</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#OSError"><span class="Identifier">OSError</span></a></pre></dt>
<dd>
Raised if a dynamic library could not be loaded.
</dd>
<a id="ResourceExhaustedError"></a>
<dt><pre><a href="system.html#ResourceExhaustedError"><span class="Identifier">ResourceExhaustedError</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#CatchableError"><span class="Identifier">CatchableError</span></a></pre></dt>
<dd>
Raised if a resource request could not be fulfilled.
</dd>
<a id="ArithmeticDefect"></a>
<dt><pre><a href="system.html#ArithmeticDefect"><span class="Identifier">ArithmeticDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
Raised if any kind of arithmetic error occurred.
</dd>
<a id="DivByZeroDefect"></a>
<dt><pre><a href="system.html#DivByZeroDefect"><span class="Identifier">DivByZeroDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#ArithmeticDefect"><span class="Identifier">ArithmeticDefect</span></a></pre></dt>
<dd>
Raised for runtime integer divide-by-zero errors.
</dd>
<a id="OverflowDefect"></a>
<dt><pre><a href="system.html#OverflowDefect"><span class="Identifier">OverflowDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#ArithmeticDefect"><span class="Identifier">ArithmeticDefect</span></a></pre></dt>
<dd>
<p>
Raised for runtime integer overflows.</p>
<p>This happens for calculations whose results are too large to fit in the provided bits.</p>
</dd>
<a id="AccessViolationDefect"></a>
<dt><pre><a href="system.html#AccessViolationDefect"><span class="Identifier">AccessViolationDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
Raised for invalid memory access errors
</dd>
<a id="AssertionDefect"></a>
<dt><pre><a href="system.html#AssertionDefect"><span class="Identifier">AssertionDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
<p>
Raised when assertion is proved wrong.</p>
<p>Usually the result of using the <a class="reference external" href="assertions.html#assert.t,untyped,string">assert() template</a>.</p>
</dd>
<a id="ValueError"></a>
<dt><pre><a href="system.html#ValueError"><span class="Identifier">ValueError</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#CatchableError"><span class="Identifier">CatchableError</span></a></pre></dt>
<dd>
Raised for string and object conversion errors.
</dd>
<a id="KeyError"></a>
<dt><pre><a href="system.html#KeyError"><span class="Identifier">KeyError</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#ValueError"><span class="Identifier">ValueError</span></a></pre></dt>
<dd>
<p>
Raised if a key cannot be found in a table.</p>
<p>Mostly used by the <a class="reference external" href="tables.html">tables</a> module, it can also be raised by other collection modules like <a class="reference external" href="sets.html">sets</a> or <a class="reference external" href="strtabs.html">strtabs</a>.</p>
</dd>
<a id="OutOfMemDefect"></a>
<dt><pre><a href="system.html#OutOfMemDefect"><span class="Identifier">OutOfMemDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
Raised for unsuccessful attempts to allocate memory.
</dd>
<a id="IndexDefect"></a>
<dt><pre><a href="system.html#IndexDefect"><span class="Identifier">IndexDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
Raised if an array index is out of bounds.
</dd>
<a id="FieldDefect"></a>
<dt><pre><a href="system.html#FieldDefect"><span class="Identifier">FieldDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
Raised if a record field is not accessible because its discriminant's value does not fit.
</dd>
<a id="RangeDefect"></a>
<dt><pre><a href="system.html#RangeDefect"><span class="Identifier">RangeDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
Raised if a range check error occurred.
</dd>
<a id="StackOverflowDefect"></a>
<dt><pre><a href="system.html#StackOverflowDefect"><span class="Identifier">StackOverflowDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
Raised if the hardware stack used for subroutine calls overflowed.
</dd>
<a id="ReraiseDefect"></a>
<dt><pre><a href="system.html#ReraiseDefect"><span class="Identifier">ReraiseDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
Raised if there is no exception to reraise.
</dd>
<a id="ObjectAssignmentDefect"></a>
<dt><pre><a href="system.html#ObjectAssignmentDefect"><span class="Identifier">ObjectAssignmentDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
Raised if an object gets assigned to its parent's object.
</dd>
<a id="ObjectConversionDefect"></a>
<dt><pre><a href="system.html#ObjectConversionDefect"><span class="Identifier">ObjectConversionDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
Raised if an object is converted to an incompatible object type. You can use <tt class="docutils literal"><span class="pre">of</span></tt> operator to check if conversion will succeed.
</dd>
<a id="FloatingPointDefect"></a>
<dt><pre><a href="system.html#FloatingPointDefect"><span class="Identifier">FloatingPointDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
Base class for floating point exceptions.
</dd>
<a id="FloatInvalidOpDefect"></a>
<dt><pre><a href="system.html#FloatInvalidOpDefect"><span class="Identifier">FloatInvalidOpDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#FloatingPointDefect"><span class="Identifier">FloatingPointDefect</span></a></pre></dt>
<dd>
<p>
Raised by invalid operations according to IEEE.</p>
<p>Raised by <tt class="docutils literal"><span class="pre">0.0/0.0</span></tt>, for example.</p>
</dd>
<a id="FloatDivByZeroDefect"></a>
<dt><pre><a href="system.html#FloatDivByZeroDefect"><span class="Identifier">FloatDivByZeroDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#FloatingPointDefect"><span class="Identifier">FloatingPointDefect</span></a></pre></dt>
<dd>
<p>
Raised by division by zero.</p>
<p>Divisor is zero and dividend is a finite nonzero number.</p>
</dd>
<a id="FloatOverflowDefect"></a>
<dt><pre><a href="system.html#FloatOverflowDefect"><span class="Identifier">FloatOverflowDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#FloatingPointDefect"><span class="Identifier">FloatingPointDefect</span></a></pre></dt>
<dd>
<p>
Raised for overflows.</p>
<p>The operation produced a result that exceeds the range of the exponent.</p>
</dd>
<a id="FloatUnderflowDefect"></a>
<dt><pre><a href="system.html#FloatUnderflowDefect"><span class="Identifier">FloatUnderflowDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#FloatingPointDefect"><span class="Identifier">FloatingPointDefect</span></a></pre></dt>
<dd>
<p>
Raised for underflows.</p>
<p>The operation produced a result that is too small to be represented as a normal number.</p>
</dd>
<a id="FloatInexactDefect"></a>
<dt><pre><a href="system.html#FloatInexactDefect"><span class="Identifier">FloatInexactDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#FloatingPointDefect"><span class="Identifier">FloatingPointDefect</span></a></pre></dt>
<dd>
<p>
Raised for inexact results.</p>
<p>The operation produced a result that cannot be represented with infinite precision -- for example: <tt class="docutils literal"><span class="pre">2.0 / 3.0, log(1.1)</span></tt></p>
<p><strong>Note</strong>: Nim currently does not detect these!</p>
</dd>
<a id="DeadThreadDefect"></a>
<dt><pre><a href="system.html#DeadThreadDefect"><span class="Identifier">DeadThreadDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
Raised if it is attempted to send a message to a dead thread.
</dd>
<a id="NilAccessDefect"></a>
<dt><pre><a href="system.html#NilAccessDefect"><span class="Identifier">NilAccessDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#Defect"><span class="Identifier">Defect</span></a></pre></dt>
<dd>
<p>
Raised on dereferences of <tt class="docutils literal"><span class="pre">nil</span></tt> pointers.</p>
<p>This is only raised if the <a class="reference external" href="segfaults.html">segfaults module</a> was imported!</p>
</dd>
<a id="ArithmeticError"></a>
<dt><pre><a href="system.html#ArithmeticError"><span class="Identifier">ArithmeticError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#ArithmeticDefect"><span class="Identifier">ArithmeticDefect</span></a></pre></dt>
<dd>
</dd>
<a id="DivByZeroError"></a>
<dt><pre><a href="system.html#DivByZeroError"><span class="Identifier">DivByZeroError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#DivByZeroDefect"><span class="Identifier">DivByZeroDefect</span></a></pre></dt>
<dd>
</dd>
<a id="OverflowError"></a>
<dt><pre><a href="system.html#OverflowError"><span class="Identifier">OverflowError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#OverflowDefect"><span class="Identifier">OverflowDefect</span></a></pre></dt>
<dd>
</dd>
<a id="AccessViolationError"></a>
<dt><pre><a href="system.html#AccessViolationError"><span class="Identifier">AccessViolationError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#AccessViolationDefect"><span class="Identifier">AccessViolationDefect</span></a></pre></dt>
<dd>
</dd>
<a id="AssertionError"></a>
<dt><pre><a href="system.html#AssertionError"><span class="Identifier">AssertionError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#AssertionDefect"><span class="Identifier">AssertionDefect</span></a></pre></dt>
<dd>
</dd>
<a id="OutOfMemError"></a>
<dt><pre><a href="system.html#OutOfMemError"><span class="Identifier">OutOfMemError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#OutOfMemDefect"><span class="Identifier">OutOfMemDefect</span></a></pre></dt>
<dd>
</dd>
<a id="IndexError"></a>
<dt><pre><a href="system.html#IndexError"><span class="Identifier">IndexError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#IndexDefect"><span class="Identifier">IndexDefect</span></a></pre></dt>
<dd>
</dd>
<a id="FieldError"></a>
<dt><pre><a href="system.html#FieldError"><span class="Identifier">FieldError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#FieldDefect"><span class="Identifier">FieldDefect</span></a></pre></dt>
<dd>
</dd>
<a id="RangeError"></a>
<dt><pre><a href="system.html#RangeError"><span class="Identifier">RangeError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#RangeDefect"><span class="Identifier">RangeDefect</span></a></pre></dt>
<dd>
</dd>
<a id="StackOverflowError"></a>
<dt><pre><a href="system.html#StackOverflowError"><span class="Identifier">StackOverflowError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#StackOverflowDefect"><span class="Identifier">StackOverflowDefect</span></a></pre></dt>
<dd>
</dd>
<a id="ReraiseError"></a>
<dt><pre><a href="system.html#ReraiseError"><span class="Identifier">ReraiseError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#ReraiseDefect"><span class="Identifier">ReraiseDefect</span></a></pre></dt>
<dd>
</dd>
<a id="ObjectAssignmentError"></a>
<dt><pre><a href="system.html#ObjectAssignmentError"><span class="Identifier">ObjectAssignmentError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#ObjectAssignmentDefect"><span class="Identifier">ObjectAssignmentDefect</span></a></pre></dt>
<dd>
</dd>
<a id="ObjectConversionError"></a>
<dt><pre><a href="system.html#ObjectConversionError"><span class="Identifier">ObjectConversionError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#ObjectConversionDefect"><span class="Identifier">ObjectConversionDefect</span></a></pre></dt>
<dd>
</dd>
<a id="FloatingPointError"></a>
<dt><pre><a href="system.html#FloatingPointError"><span class="Identifier">FloatingPointError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#FloatingPointDefect"><span class="Identifier">FloatingPointDefect</span></a></pre></dt>
<dd>
</dd>
<a id="FloatInvalidOpError"></a>
<dt><pre><a href="system.html#FloatInvalidOpError"><span class="Identifier">FloatInvalidOpError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#FloatInvalidOpDefect"><span class="Identifier">FloatInvalidOpDefect</span></a></pre></dt>
<dd>
</dd>
<a id="FloatDivByZeroError"></a>
<dt><pre><a href="system.html#FloatDivByZeroError"><span class="Identifier">FloatDivByZeroError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#FloatDivByZeroDefect"><span class="Identifier">FloatDivByZeroDefect</span></a></pre></dt>
<dd>
</dd>
<a id="FloatOverflowError"></a>
<dt><pre><a href="system.html#FloatOverflowError"><span class="Identifier">FloatOverflowError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#FloatOverflowDefect"><span class="Identifier">FloatOverflowDefect</span></a></pre></dt>
<dd>
</dd>
<a id="FloatUnderflowError"></a>
<dt><pre><a href="system.html#FloatUnderflowError"><span class="Identifier">FloatUnderflowError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#FloatUnderflowDefect"><span class="Identifier">FloatUnderflowDefect</span></a></pre></dt>
<dd>
</dd>
<a id="FloatInexactError"></a>
<dt><pre><a href="system.html#FloatInexactError"><span class="Identifier">FloatInexactError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#FloatInexactDefect"><span class="Identifier">FloatInexactDefect</span></a></pre></dt>
<dd>
</dd>
<a id="DeadThreadError"></a>
<dt><pre><a href="system.html#DeadThreadError"><span class="Identifier">DeadThreadError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#DeadThreadDefect"><span class="Identifier">DeadThreadDefect</span></a></pre></dt>
<dd>
</dd>
<a id="NilAccessError"></a>
<dt><pre><a href="system.html#NilAccessError"><span class="Identifier">NilAccessError</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;See corresponding Defect&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#NilAccessDefect"><span class="Identifier">NilAccessDefect</span></a></pre></dt>
<dd>
</dd>
<a id="JsRoot"></a>
<dt><pre><a href="system.html#JsRoot"><span class="Identifier">JsRoot</span></a> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <a href="system.html#RootObj"><span class="Identifier">RootObj</span></a>
</pre></dt>
<dd>
Root type of the JavaScript object hierarchy
</dd>
<a id="owned"></a>
<dt><pre><a href="system.html#owned"><span class="Identifier">owned</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BuiltinType&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
type constructor to mark a ref/ptr or a closure as <tt class="docutils literal"><span class="pre">owned</span></tt>.
</dd>
<a id="Endianness"></a>
<dt><pre><a href="system.html#Endianness"><span class="Identifier">Endianness</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">littleEndian</span><span class="Other">,</span> <span class="Identifier">bigEndian</span></pre></dt>
<dd>
Type describing the endianness of a processor.
</dd>
<a id="TaintedString"></a>
<dt><pre><a href="system.html#TaintedString"><span class="Identifier">TaintedString</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;Deprecated since 1.5&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#string"><span class="Identifier">string</span></a></pre></dt>
<dd>
</dd>
<a id="ByteAddress"></a>
<dt><pre><a href="system.html#ByteAddress"><span class="Identifier">ByteAddress</span></a> <span class="Other">=</span> <a href="system.html#int"><span class="Identifier">int</span></a></pre></dt>
<dd>
is the signed integer type that should be used for converting pointers to integer addresses for readability.
</dd>
<a id="BiggestFloat"></a>
<dt><pre><a href="system.html#BiggestFloat"><span class="Identifier">BiggestFloat</span></a> <span class="Other">=</span> <a href="system.html#float64"><span class="Identifier">float64</span></a></pre></dt>
<dd>
is an alias for the biggest floating point type the Nim compiler supports. Currently this is <tt class="docutils literal"><span class="pre">float64</span></tt>, but it is platform-dependent in general.
</dd>
<a id="BiggestUInt"></a>
<dt><pre><a href="system.html#BiggestUInt"><span class="Identifier">BiggestUInt</span></a> <span class="Other">=</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a></pre></dt>
<dd>
is an alias for the biggest unsigned integer type the Nim compiler supports. Currently this is <tt class="docutils literal"><span class="pre">uint32</span></tt> for JS and <tt class="docutils literal"><span class="pre">uint64</span></tt> for other targets.
</dd>
<a id="clong"></a>
<dt><pre><a href="system.html#clong"><span class="Identifier">clong</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;long&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#int"><span class="Identifier">int</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">long</span></tt> in <em>C</em>.
</dd>
<a id="culong"></a>
<dt><pre><a href="system.html#culong"><span class="Identifier">culong</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;unsigned long&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#uint"><span class="Identifier">uint</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">unsigned long</span></tt> in <em>C</em>.
</dd>
<a id="cchar"></a>
<dt><pre><a href="system.html#cchar"><span class="Identifier">cchar</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;char&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#char"><span class="Identifier">char</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">char</span></tt> in <em>C</em>.
</dd>
<a id="cschar"></a>
<dt><pre><a href="system.html#cschar"><span class="Identifier">cschar</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;signed char&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#int8"><span class="Identifier">int8</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">signed char</span></tt> in <em>C</em>.
</dd>
<a id="cshort"></a>
<dt><pre><a href="system.html#cshort"><span class="Identifier">cshort</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;short&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#int16"><span class="Identifier">int16</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">short</span></tt> in <em>C</em>.
</dd>
<a id="cint"></a>
<dt><pre><a href="system.html#cint"><span class="Identifier">cint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;int&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#int32"><span class="Identifier">int32</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">int</span></tt> in <em>C</em>.
</dd>
<a id="csize"></a>
<dt><pre><a href="system.html#csize"><span class="Identifier">csize</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;size_t&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;use `csize_t` instead&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#int"><span class="Identifier">int</span></a></pre></dt>
<dd>
This isn't the same as <tt class="docutils literal"><span class="pre">size_t</span></tt> in <em>C</em>. Don't use it.
</dd>
<a id="csize_t"></a>
<dt><pre><a href="system.html#csize_t"><span class="Identifier">csize_t</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;size_t&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#uint"><span class="Identifier">uint</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">size_t</span></tt> in <em>C</em>.
</dd>
<a id="clonglong"></a>
<dt><pre><a href="system.html#clonglong"><span class="Identifier">clonglong</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;long long&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#int64"><span class="Identifier">int64</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">long long</span></tt> in <em>C</em>.
</dd>
<a id="cfloat"></a>
<dt><pre><a href="system.html#cfloat"><span class="Identifier">cfloat</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;float&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#float32"><span class="Identifier">float32</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">float</span></tt> in <em>C</em>.
</dd>
<a id="cdouble"></a>
<dt><pre><a href="system.html#cdouble"><span class="Identifier">cdouble</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;double&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#float64"><span class="Identifier">float64</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">double</span></tt> in <em>C</em>.
</dd>
<a id="clongdouble"></a>
<dt><pre><a href="system.html#clongdouble"><span class="Identifier">clongdouble</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;long double&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#BiggestFloat"><span class="Identifier">BiggestFloat</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">long double</span></tt> in <em>C</em>. This C type is not supported by Nim's code generator.
</dd>
<a id="cuchar"></a>
<dt><pre><a href="system.html#cuchar"><span class="Identifier">cuchar</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;unsigned char&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#char"><span class="Identifier">char</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">unsigned char</span></tt> in <em>C</em>.
</dd>
<a id="cushort"></a>
<dt><pre><a href="system.html#cushort"><span class="Identifier">cushort</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;unsigned short&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">unsigned short</span></tt> in <em>C</em>.
</dd>
<a id="cuint"></a>
<dt><pre><a href="system.html#cuint"><span class="Identifier">cuint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;unsigned int&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">unsigned int</span></tt> in <em>C</em>.
</dd>
<a id="culonglong"></a>
<dt><pre><a href="system.html#culonglong"><span class="Identifier">culonglong</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;unsigned long long&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a></pre></dt>
<dd>
This is the same as the type <tt class="docutils literal"><span class="pre">unsigned long long</span></tt> in <em>C</em>.
</dd>
<a id="cstringArray"></a>
<dt><pre><a href="system.html#cstringArray"><span class="Identifier">cstringArray</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;char**&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <span class="Keyword">ptr</span> <a href="system.html#UncheckedArray"><span class="Identifier">UncheckedArray</span></a><span class="Other">[</span><a href="system.html#cstring"><span class="Identifier">cstring</span></a><span class="Other">]</span></pre></dt>
<dd>
This is binary compatible to the type <tt class="docutils literal"><span class="pre">char**</span></tt> in <em>C</em>. The array's high value is large enough to disable bounds checking in practice. Use <a class="reference external" href="#cstringArrayToSeq,cstringArray,Natural">cstringArrayToSeq proc</a> to convert it into a <tt class="docutils literal"><span class="pre">seq[string]</span></tt>.
</dd>
<a id="PFloat32"></a>
<dt><pre><a href="system.html#PFloat32"><span class="Identifier">PFloat32</span></a> <span class="Other">=</span> <span class="Keyword">ptr</span> <a href="system.html#float32"><span class="Identifier">float32</span></a></pre></dt>
<dd>
An alias for <tt class="docutils literal"><span class="pre">ptr float32</span></tt>.
</dd>
<a id="PFloat64"></a>
<dt><pre><a href="system.html#PFloat64"><span class="Identifier">PFloat64</span></a> <span class="Other">=</span> <span class="Keyword">ptr</span> <a href="system.html#float64"><span class="Identifier">float64</span></a></pre></dt>
<dd>
An alias for <tt class="docutils literal"><span class="pre">ptr float64</span></tt>.
</dd>
<a id="PInt64"></a>
<dt><pre><a href="system.html#PInt64"><span class="Identifier">PInt64</span></a> <span class="Other">=</span> <span class="Keyword">ptr</span> <a href="system.html#int64"><span class="Identifier">int64</span></a></pre></dt>
<dd>
An alias for <tt class="docutils literal"><span class="pre">ptr int64</span></tt>.
</dd>
<a id="PInt32"></a>
<dt><pre><a href="system.html#PInt32"><span class="Identifier">PInt32</span></a> <span class="Other">=</span> <span class="Keyword">ptr</span> <a href="system.html#int32"><span class="Identifier">int32</span></a></pre></dt>
<dd>
An alias for <tt class="docutils literal"><span class="pre">ptr int32</span></tt>.
</dd>
<a id="AllocStats"></a>
<dt><pre><a href="system.html#AllocStats"><span class="Identifier">AllocStats</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">allocCount</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a>
<span class="Identifier">deallocCount</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a>
</pre></dt>
<dd>
</dd>
<a id="AtomType"></a>
<dt><pre><a href="system.html#AtomType"><span class="Identifier">AtomType</span></a> <span class="Other">=</span> <a href="system.html#SomeNumber"><span class="Identifier">SomeNumber</span></a> <span class="Operator">|</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a> <span class="Operator">|</span> <span class="Keyword">ptr</span> <span class="Operator">|</span> <a href="system.html#char"><span class="Identifier">char</span></a> <span class="Operator">|</span> <a href="system.html#bool"><span class="Identifier">bool</span></a></pre></dt>
<dd>
Type Class representing valid types for use with atomic procs
</dd>
<a id="GC_Strategy"></a>
<dt><pre><a href="system.html#GC_Strategy"><span class="Identifier">GC_Strategy</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">gcThroughput</span><span class="Other">,</span> <span class="Comment">## optimize for throughput</span>
<span class="Identifier">gcResponsiveness</span><span class="Other">,</span> <span class="Comment">## optimize for responsiveness (default)</span>
<span class="Identifier">gcOptimizeTime</span><span class="Other">,</span> <span class="Comment">## optimize for speed</span>
<span class="Identifier">gcOptimizeSpace</span> <span class="Comment">## optimize for memory footprint</span></pre></dt>
<dd>
The strategy the GC should use for the application.
</dd>
<a id="PFrame"></a>
<dt><pre><a href="system.html#PFrame"><span class="Identifier">PFrame</span></a> <span class="Other">=</span> <span class="Keyword">ptr</span> <a href="system.html#TFrame"><span class="Identifier">TFrame</span></a></pre></dt>
<dd>
Represents a runtime frame of the call stack; part of the debugger API.
</dd>
<a id="TFrame"></a>
<dt><pre><a href="system.html#TFrame"><span class="Identifier">TFrame</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">,</span> <span class="Identifier">nodecl</span><span class="Other">,</span> <span class="Identifier">final</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">prev</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#PFrame"><span class="Identifier">PFrame</span></a> <span class="Comment">## Previous frame; used for chaining the call stack.</span>
<span class="Identifier">procname</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#cstring"><span class="Identifier">cstring</span></a> <span class="Comment">## Name of the proc that is currently executing.</span>
<span class="Identifier">line</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Comment">## Line number of the proc that is currently executing.</span>
<span class="Identifier">filename</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#cstring"><span class="Identifier">cstring</span></a> <span class="Comment">## Filename of the proc that is currently executing.</span>
<span class="Identifier">len</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span class="Comment">## Length of the inspectable slots.</span>
<span class="Identifier">calldepth</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span class="Comment">## Used for max call depth checking.</span>
<span class="Keyword">when</span> <span class="Identifier">NimStackTraceMsgs</span><span class="Other">:</span>
<span class="Identifier">frameMsgLen</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Comment">## end position in frameMsgBuf for this frame.</span>
</pre></dt>
<dd>
The frame itself.
</dd>
<a id="FileSeekPos"></a>
<dt><pre><a href="system.html#FileSeekPos"><span class="Identifier">FileSeekPos</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
<span class="Identifier">fspSet</span><span class="Other">,</span> <span class="Comment">## Seek to absolute value</span>
<span class="Identifier">fspCur</span><span class="Other">,</span> <span class="Comment">## Seek relative to current position</span>
<span class="Identifier">fspEnd</span> <span class="Comment">## Seek relative to end</span></pre></dt>
<dd>
Position relative to which seek should happen.
</dd>
<a id="ForeignCell"></a>
<dt><pre><a href="system.html#ForeignCell"><span class="Identifier">ForeignCell</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
<span class="Identifier">data</span><span class="Operator">*</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a>
<span class="Identifier">owner</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">GcHeap</span>
</pre></dt>
<dd>
</dd>
<a id="BackwardsIndex"></a>
<dt><pre><a href="system.html#BackwardsIndex"><span class="Identifier">BackwardsIndex</span></a> <span class="Other">=</span> <span class="Keyword">distinct</span> <a href="system.html#int"><span class="Identifier">int</span></a></pre></dt>
<dd>
Type that is constructed by <tt class="docutils literal"><span class="pre">^</span></tt> for reversed array accesses. (See <a class="reference external" href="#^.t,int">^ template</a>)
</dd>
<a id="NimNode"></a>
<dt><pre><a href="system.html#NimNode"><span class="Identifier">NimNode</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;PNimrodNode&quot;</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <span class="Keyword">ref</span> <span class="Identifier">NimNodeObj</span></pre></dt>
<dd>
Represents a Nim AST node. Macros operate on this type.
</dd>
<a id="ForLoopStmt"></a>
<dt><pre><a href="system.html#ForLoopStmt"><span class="Identifier">ForLoopStmt</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">compilerproc</span></span><span class="Other">.}</span></span> <span class="Other">=</span> <span class="Keyword">object</span></pre></dt>
<dd>
A special type that marks a macro as a <span id="forminusloop-macro_1">for-loop macro</span>. See <a class="reference external" href="manual.html#macros-for-loop-macro">&quot;For Loop Macro&quot;</a>.
</dd>
</dl></div>
<div class="section" id="8">
<h1><a class="toc-backref" href="#8">Vars</a></h1>
<dl class="item">
<a id="programResult"></a>
<dt><pre><a href="system.html#programResult"><span class="Identifier">programResult</span></a><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a></pre></dt>
<dd>
deprecated, prefer <tt class="docutils literal"><span class="pre">quit</span></tt> or <tt class="docutils literal"><span class="pre">exitprocs.getProgramResult</span></tt>, <tt class="docutils literal"><span class="pre">exitprocs.setProgramResult</span></tt>.
</dd>
<a id="globalRaiseHook"></a>
<dt><pre><a href="system.html#globalRaiseHook"><span class="Identifier">globalRaiseHook</span></a><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">e</span><span class="Other">:</span> <span class="Keyword">ref</span> <a href="system.html#Exception"><span class="Identifier">Exception</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">nimcall</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>With this hook you can influence exception handling on a global level. If not nil, every 'raise' statement ends up calling this hook.</p>
<p><strong>Warning</strong>: Ordinary application code should never set this hook! You better know what you do when setting this.</p>
<p>If <tt class="docutils literal"><span class="pre">globalRaiseHook</span></tt> returns false, the exception is caught and does not propagate further through the call stack.</p>
</dd>
<a id="localRaiseHook"></a>
<dt><pre><a href="system.html#localRaiseHook"><span class="Identifier">localRaiseHook</span></a><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">e</span><span class="Other">:</span> <span class="Keyword">ref</span> <a href="system.html#Exception"><span class="Identifier">Exception</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">nimcall</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>With this hook you can influence exception handling on a thread local level. If not nil, every 'raise' statement ends up calling this hook.</p>
<p><strong>Warning</strong>: Ordinary application code should never set this hook! You better know what you do when setting this.</p>
<p>If <tt class="docutils literal"><span class="pre">localRaiseHook</span></tt> returns false, the exception is caught and does not propagate further through the call stack.</p>
</dd>
<a id="outOfMemHook"></a>
<dt><pre><a href="system.html#outOfMemHook"><span class="Identifier">outOfMemHook</span></a><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">nimcall</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">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Set this variable to provide a procedure that should be called in case of an <span id="out-of-memory_1">out of memory</span> event. The standard handler writes an error message and terminates the program.</p>
<p><tt class="docutils literal"><span class="pre">outOfMemHook</span></tt> can be used to raise an exception in case of OOM like so:</p>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">gOutOfMem</span><span class="Punctuation">:</span> <span class="Keyword">ref</span> <span class="Identifier">EOutOfMemory</span>
<span class="Identifier">new</span><span class="Punctuation">(</span><span class="Identifier">gOutOfMem</span><span class="Punctuation">)</span> <span class="Comment"># need to be allocated *before* OOM really happened!</span>
<span class="Identifier">gOutOfMem</span><span class="Operator">.</span><span class="Identifier">msg</span> <span class="Operator">=</span> <span class="StringLit">&quot;out of memory&quot;</span>
<span class="Keyword">proc</span> <span class="Identifier">handleOOM</span><span class="Punctuation">(</span><span class="Punctuation">)</span> <span class="Operator">=</span>
<span class="Keyword">raise</span> <span class="Identifier">gOutOfMem</span>
<span class="Identifier">system</span><span class="Operator">.</span><span class="Identifier">outOfMemHook</span> <span class="Operator">=</span> <span class="Identifier">handleOOM</span></pre><p>If the handler does not raise an exception, ordinary control flow continues and the program is terminated.</p>
</dd>
<a id="unhandledExceptionHook"></a>
<dt><pre><a href="system.html#unhandledExceptionHook"><span class="Identifier">unhandledExceptionHook</span></a><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">e</span><span class="Other">:</span> <span class="Keyword">ref</span> <a href="system.html#Exception"><span class="Identifier">Exception</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">nimcall</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">gcsafe</span><span class="Other">,</span>
<span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Set this variable to provide a procedure that should be called in case of an <tt class="docutils literal"><span class="pre">unhandle exception</span></tt> event. The standard handler writes an error message and terminates the program, except when using <tt class="docutils literal"><span class="pre">--os:any</span></tt>
</dd>
<a id="errorMessageWriter"></a>
<dt><pre><a href="system.html#errorMessageWriter"><span class="Identifier">errorMessageWriter</span></a><span class="Other">:</span> <span class="Other">(</span><span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">msg</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><a href="system.html#WriteIOEffect"><span class="Identifier">WriteIOEffect</span></a><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">nimcall</span></span><span class="Other">.}</span></span><span class="Other">)</span></pre></dt>
<dd>
Function that will be called instead of <tt class="docutils literal"><span class="pre">stdmsg.write</span></tt> when printing stacktrace. Unstable API.
</dd>
<a id="frameMsgBuf"></a>
<dt><pre><a href="system.html#frameMsgBuf"><span class="Identifier">frameMsgBuf</span></a><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a></pre></dt>
<dd>
</dd>
<a id="onUnhandledException"></a>
<dt><pre><a href="system.html#onUnhandledException"><span class="Identifier">onUnhandledException</span></a><span class="Other">:</span> <span class="Other">(</span><span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">errorMsg</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">nimcall</span><span class="Other">,</span> <span class="Identifier">gcsafe</span></span><span class="Other">.}</span></span><span class="Other">)</span></pre></dt>
<dd>
<p>Set this error
handler to override the existing behaviour on an unhandled exception.</p>
<p>The default is to write a stacktrace to <tt class="docutils literal"><span class="pre">stderr</span></tt> and then call <tt class="docutils literal"><span class="pre">quit(1)</span></tt>. Unstable API.</p>
</dd>
</dl></div>
<div class="section" id="9">
<h1><a class="toc-backref" href="#9">Lets</a></h1>
<dl class="item">
<a id="nimvm"></a>
<dt><pre><a href="system.html#nimvm"><span class="Identifier">nimvm</span></a><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span class="Other">=</span> <span class="DecNumber">false</span></pre></dt>
<dd>
May be used only in <tt class="docutils literal"><span class="pre">when</span></tt> expression. It is true in Nim VM context and false otherwise.
</dd>
</dl></div>
<div class="section" id="10">
<h1><a class="toc-backref" href="#10">Consts</a></h1>
<dl class="item">
<a id="on"></a>
<dt><pre><a href="system.html#on"><span class="Identifier">on</span></a> <span class="Other">=</span> <span class="DecNumber">true</span></pre></dt>
<dd>
Alias for <tt class="docutils literal"><span class="pre">true</span></tt>.
</dd>
<a id="off"></a>
<dt><pre><a href="system.html#off"><span class="Identifier">off</span></a> <span class="Other">=</span> <span class="DecNumber">false</span></pre></dt>
<dd>
Alias for <tt class="docutils literal"><span class="pre">false</span></tt>.
</dd>
<a id="appType"></a>
<dt><pre><a href="system.html#appType"><span class="Identifier">appType</span></a><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span></pre></dt>
<dd>
A string that describes the application type. Possible values: <tt class="docutils literal"><span class="pre">&quot;console&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;gui&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;lib&quot;</span></tt>.
</dd>
<a id="NoFakeVars"></a>
<dt><pre><a href="system.html#NoFakeVars"><span class="Identifier">NoFakeVars</span></a> <span class="Other">=</span> <span class="DecNumber">false</span></pre></dt>
<dd>
<tt class="docutils literal"><span class="pre">true</span></tt> if the backend doesn't support
&quot;fake variables&quot; like <tt class="docutils literal"><span class="pre">var EBADF {.importc.}: cint</span></tt>.
</dd>
<a id="isMainModule"></a>
<dt><pre><a href="system.html#isMainModule"><span class="Identifier">isMainModule</span></a><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span class="Other">=</span> <span class="DecNumber">false</span></pre></dt>
<dd>
True only when accessed in the main module. This works thanks to compiler magic. It is useful to embed testing code in a module.
</dd>
<a id="CompileDate"></a>
<dt><pre><a href="system.html#CompileDate"><span class="Identifier">CompileDate</span></a><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span class="Other">=</span> <span class="StringLit">&quot;0000-00-00&quot;</span></pre></dt>
<dd>
The date (in UTC) of compilation as a string of the form <tt class="docutils literal"><span class="pre">YYYY-MM-DD</span></tt>. This works thanks to compiler magic.
</dd>
<a id="CompileTime"></a>
<dt><pre><a href="system.html#CompileTime"><span class="Identifier">CompileTime</span></a><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span class="Other">=</span> <span class="StringLit">&quot;00:00:00&quot;</span></pre></dt>
<dd>
The time (in UTC) of compilation as a string of the form <tt class="docutils literal"><span class="pre">HH:MM:SS</span></tt>. This works thanks to compiler magic.
</dd>
<a id="cpuEndian"></a>
<dt><pre><a href="system.html#cpuEndian"><span class="Identifier">cpuEndian</span></a><span class="Other">:</span> <a href="system.html#Endianness"><span class="Identifier">Endianness</span></a> <span class="Other">=</span> <span class="DecNumber">littleEndian</span></pre></dt>
<dd>
The endianness of the target CPU. This is a valuable piece of information for low-level code only. This works thanks to compiler magic.
</dd>
<a id="hostOS"></a>
<dt><pre><a href="system.html#hostOS"><span class="Identifier">hostOS</span></a><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span></pre></dt>
<dd>
<p>A string that describes the host operating system.</p>
<p>Possible values: <tt class="docutils literal"><span class="pre">&quot;windows&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;macosx&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;linux&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;netbsd&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;freebsd&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;openbsd&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;solaris&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;aix&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;haiku&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;standalone&quot;</span></tt>.</p>
</dd>
<a id="hostCPU"></a>
<dt><pre><a href="system.html#hostCPU"><span class="Identifier">hostCPU</span></a><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span></pre></dt>
<dd>
<p>A string that describes the host CPU.</p>
<p>Possible values: <tt class="docutils literal"><span class="pre">&quot;i386&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;alpha&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;powerpc&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;powerpc64&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;powerpc64el&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;sparc&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;amd64&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;mips&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;mipsel&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;arm&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;arm64&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;mips64&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;mips64el&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;riscv32&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;riscv64&quot;</span></tt>.</p>
</dd>
<a id="nimEnableCovariance"></a>
<dt><pre><a href="system.html#nimEnableCovariance"><span class="Identifier">nimEnableCovariance</span></a> <span class="Other">=</span> <span class="DecNumber">false</span></pre></dt>
<dd>
</dd>
<a id="QuitSuccess"></a>
<dt><pre><a href="system.html#QuitSuccess"><span class="Identifier">QuitSuccess</span></a> <span class="Other">=</span> <span class="DecNumber">0</span></pre></dt>
<dd>
is the value that should be passed to <a class="reference external" href="#quit,int">quit</a> to indicate success.
</dd>
<a id="QuitFailure"></a>
<dt><pre><a href="system.html#QuitFailure"><span class="Identifier">QuitFailure</span></a> <span class="Other">=</span> <span class="DecNumber">1</span></pre></dt>
<dd>
is the value that should be passed to <a class="reference external" href="#quit,int">quit</a> to indicate failure.
</dd>
<a id="Inf"></a>
<dt><pre><a href="system.html#Inf"><span class="Identifier">Inf</span></a> <span class="Other">=</span> <span class="FloatNumber">0x7FF0000000000000'f64</span></pre></dt>
<dd>
Contains the IEEE floating point value of positive infinity.
</dd>
<a id="NegInf"></a>
<dt><pre><a href="system.html#NegInf"><span class="Identifier">NegInf</span></a> <span class="Other">=</span> <span class="FloatNumber">0xFFF0000000000000'f64</span></pre></dt>
<dd>
Contains the IEEE floating point value of negative infinity.
</dd>
<a id="NaN"></a>
<dt><pre><a href="system.html#NaN"><span class="Identifier">NaN</span></a> <span class="Other">=</span> <span class="FloatNumber">0x7FF7FFFFFFFFFFFF'f64</span></pre></dt>
<dd>
<p>Contains an IEEE floating point value of <em>Not A Number</em>.</p>
<p>Note that you cannot compare a floating point value to this value and expect a reasonable result - use the <tt class="docutils literal"><span class="pre">isNaN</span></tt> or <tt class="docutils literal"><span class="pre">classify</span></tt> procedure in the <a class="reference external" href="math.html">math module</a> for checking for NaN.</p>
</dd>
<a id="nimCoroutines"></a>
<dt><pre><a href="system.html#nimCoroutines"><span class="Identifier">nimCoroutines</span></a> <span class="Other">=</span> <span class="DecNumber">false</span></pre></dt>
<dd>
</dd>
<a id="NimMajor"></a>
<dt><pre><a href="system.html#NimMajor"><span class="Identifier">NimMajor</span></a><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">1</span></pre></dt>
<dd>
is the major number of Nim's version. Example:<pre class="listing"><span class="Keyword">when</span> <span class="Punctuation">(</span><span class="Identifier">NimMajor</span><span class="Punctuation">,</span> <span class="Identifier">NimMinor</span><span class="Punctuation">,</span> <span class="Identifier">NimPatch</span><span class="Punctuation">)</span> <span class="Operator">&gt;=</span> <span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Keyword">discard</span></pre>
</dd>
<a id="NimMinor"></a>
<dt><pre><a href="system.html#NimMinor"><span class="Identifier">NimMinor</span></a><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">5</span></pre></dt>
<dd>
is the minor number of Nim's version. Odd for devel, even for releases.
</dd>
<a id="NimPatch"></a>
<dt><pre><a href="system.html#NimPatch"><span class="Identifier">NimPatch</span></a><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">1</span></pre></dt>
<dd>
is the patch number of Nim's version. Odd for devel, even for releases.
</dd>
<a id="NimVersion"></a>
<dt><pre><a href="system.html#NimVersion"><span class="Identifier">NimVersion</span></a><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span class="Other">=</span> <span class="StringLit">&quot;1.5.1&quot;</span></pre></dt>
<dd>
is the version of Nim as a string.
</dd>
<a id="nativeStackTraceSupported"></a>
<dt><pre><a href="system.html#nativeStackTraceSupported"><span class="Identifier">nativeStackTraceSupported</span></a> <span class="Other">=</span> <span class="DecNumber">false</span></pre></dt>
<dd>
</dd>
</dl></div>
<div class="section" id="12">
<h1><a class="toc-backref" href="#12">Procs</a></h1>
<dl class="item">
<a id="not,bool"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#not%2Cbool"><span class="Identifier">`not`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Not&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Boolean not; returns true if <tt class="docutils literal"><span class="pre">x == false</span></tt>.
</dd>
<a id="and,bool,bool"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#and%2Cbool%2Cbool"><span class="Identifier">`and`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;And&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Boolean <tt class="docutils literal"><span class="pre">and</span></tt>; returns true if <tt class="docutils literal"><span class="pre">x == y == true</span></tt> (if both arguments are true).</p>
<p>Evaluation is lazy: if <tt class="docutils literal"><span class="pre">x</span></tt> is false, <tt class="docutils literal"><span class="pre">y</span></tt> will not even be evaluated.</p>
</dd>
<a id="or,bool,bool"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#or%2Cbool%2Cbool"><span class="Identifier">`or`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Or&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Boolean <tt class="docutils literal"><span class="pre">or</span></tt>; returns true if <tt class="docutils literal"><span class="pre">not (not x and not y)</span></tt> (if any of the arguments is true).</p>
<p>Evaluation is lazy: if <tt class="docutils literal"><span class="pre">x</span></tt> is true, <tt class="docutils literal"><span class="pre">y</span></tt> will not even be evaluated.</p>
</dd>
<a id="xor,bool,bool"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#xor%2Cbool%2Cbool"><span class="Identifier">`xor`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Xor&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Boolean <tt class="docutils literal"><span class="pre">exclusive or</span></tt>; returns true if <tt class="docutils literal"><span class="pre">x != y</span></tt> (if either argument is true while the other is false).
</dd>
<a id="compileOption,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#compileOption%2Cstring"><span class="Identifier">compileOption</span></a><span class="Other">(</span><span class="Identifier">option</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;CompileOption&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Can be used to determine an <tt class="docutils literal"><span class="pre">on|off</span></tt> compile-time option. Example:<pre class="listing"><span class="Keyword">when</span> <span class="Identifier">compileOption</span><span class="Punctuation">(</span><span class="StringLit">&quot;floatchecks&quot;</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
<span class="Identifier">echo</span> <span class="StringLit">&quot;compiled with floating point NaN and Inf checks&quot;</span></pre>
</dd>
<a id="compileOption,string,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#compileOption%2Cstring%2Cstring"><span class="Identifier">compileOption</span></a><span class="Other">(</span><span class="Identifier">option</span><span class="Other">,</span> <span class="Identifier">arg</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;CompileOptionArg&quot;</span><span class="Other">,</span>
<span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Can be used to determine an enum compile-time option. Example:<pre class="listing"><span class="Keyword">when</span> <span class="Identifier">compileOption</span><span class="Punctuation">(</span><span class="StringLit">&quot;opt&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;size&quot;</span><span class="Punctuation">)</span> <span class="Keyword">and</span> <span class="Identifier">compileOption</span><span class="Punctuation">(</span><span class="StringLit">&quot;gc&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;boehm&quot;</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
<span class="Identifier">echo</span> <span class="StringLit">&quot;compiled with optimization for size and uses Boehm's GC&quot;</span></pre>
</dd>
<a id="or,typedesc,typedesc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#or%2Ctypedesc%2Ctypedesc"><span class="Identifier">`or`</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;TypeTrait&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Constructs an <tt class="docutils literal"><span class="pre">or</span></tt> meta class.
</dd>
<a id="and,typedesc,typedesc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#and%2Ctypedesc%2Ctypedesc"><span class="Identifier">`and`</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;TypeTrait&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Constructs an <tt class="docutils literal"><span class="pre">and</span></tt> meta class.
</dd>
<a id="not,typedesc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#not%2Ctypedesc"><span class="Identifier">`not`</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;TypeTrait&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Constructs an <tt class="docutils literal"><span class="pre">not</span></tt> meta class.
</dd>
<a id="defined,untyped"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#defined%2Cuntyped"><span class="Identifier">defined</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Defined&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">compileTime</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Special compile-time procedure that checks whether <tt class="docutils literal"><span class="pre">x</span></tt> is defined.</p>
<p><tt class="docutils literal"><span class="pre">x</span></tt> is an external symbol introduced through the compiler's <a class="reference external" href="nimc.html#compiler-usage-compileminustime-symbols">-d:x switch</a> to enable build time conditionals:</p>
<pre class="listing"><span class="Keyword">when</span> <span class="Keyword">not</span> <span class="Identifier">defined</span><span class="Punctuation">(</span><span class="Identifier">release</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
<span class="Comment"># Do here programmer friendly expensive sanity checks.</span>
<span class="Comment"># Put here the normal code</span></pre>
</dd>
<a id="runnableExamples,string,untyped"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#runnableExamples%2Cstring%2Cuntyped"><span class="Identifier">runnableExamples</span></a><span class="Other">(</span><span class="Identifier">rdoccmd</span> <span class="Other">=</span> <span class="StringLit">&quot;&quot;</span><span class="Other">;</span> <span class="Identifier">body</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;RunnableExamples&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
A section you should use to mark <span id="runnable-example_1">runnable example</span> code with.<ul class="simple"><li>In normal debug and release builds code within a <tt class="docutils literal"><span class="pre">runnableExamples</span></tt> section is ignored.</li>
<li>The documentation generator is aware of these examples and considers them part of the <tt class="docutils literal"><span class="pre">##</span></tt> doc comment. As the last step of documentation generation each runnableExample is put in its own file <tt class="docutils literal"><span class="pre">$file_examples$i.nim</span></tt>, compiled and tested. The collected examples are put into their own module to ensure the examples do not refer to non-exported symbols.</li>
</ul>
<p>Usage:</p>
<pre class="listing"><span class="Keyword">proc</span> <span class="Identifier">double</span><span class="Operator">*</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">:</span> <span class="Identifier">int</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Identifier">int</span> <span class="Operator">=</span>
<span class="Comment">## This proc doubles a number.</span>
<span class="Identifier">runnableExamples</span><span class="Punctuation">:</span>
<span class="Comment">## at module scope</span>
<span class="Identifier">assert</span> <span class="Identifier">double</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">10</span>
<span class="Keyword">block</span><span class="Punctuation">:</span> <span class="Comment">## at block scope</span>
<span class="Keyword">defer</span><span class="Punctuation">:</span> <span class="Identifier">echo</span> <span class="StringLit">&quot;done&quot;</span>
<span class="Identifier">result</span> <span class="Operator">=</span> <span class="DecNumber">2</span> <span class="Operator">*</span> <span class="Identifier">x</span>
<span class="Identifier">runnableExamples</span> <span class="StringLit">&quot;-d:foo -b:cpp&quot;</span><span class="Punctuation">:</span>
<span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">compilesettings</span>
<span class="Identifier">doAssert</span> <span class="Identifier">querySetting</span><span class="Punctuation">(</span><span class="Identifier">backend</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="StringLit">&quot;cpp&quot;</span>
<span class="Identifier">runnableExamples</span> <span class="StringLit">&quot;-r:off&quot;</span><span class="Punctuation">:</span> <span class="Comment">## this one is only compiled</span>
<span class="Keyword">import</span> <span class="Identifier">std</span><span class="Operator">/</span><span class="Identifier">browsers</span>
<span class="Identifier">openDefaultBrowser</span> <span class="StringLit">&quot;https://forum.nim-lang.org/&quot;</span></pre>
</dd>
<a id="declared,untyped"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#declared%2Cuntyped"><span class="Identifier">declared</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Declared&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">compileTime</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Special compile-time procedure that checks whether <tt class="docutils literal"><span class="pre">x</span></tt> is declared. <tt class="docutils literal"><span class="pre">x</span></tt> has to be an identifier or a qualified identifier.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#declaredInScope,untyped">declaredInScope</a></li>
</ul>
<p>This can be used to check whether a library provides a certain feature or not:</p>
<pre class="listing"><span class="Keyword">when</span> <span class="Keyword">not</span> <span class="Identifier">declared</span><span class="Punctuation">(</span><span class="Identifier">strutils</span><span class="Operator">.</span><span class="Identifier">toUpper</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
<span class="Comment"># provide our own toUpper proc here, because strutils is</span>
<span class="Comment"># missing it.</span></pre>
</dd>
<a id="declaredInScope,untyped"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#declaredInScope%2Cuntyped"><span class="Identifier">declaredInScope</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DeclaredInScope&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span>
<span class="Identifier">compileTime</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Special compile-time procedure that checks whether <tt class="docutils literal"><span class="pre">x</span></tt> is declared in the current scope. <tt class="docutils literal"><span class="pre">x</span></tt> has to be an identifier.
</dd>
<a id="addr,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#addr%2CT"><span class="Identifier">`addr`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Addr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Builtin <tt class="docutils literal"><span class="pre">addr</span></tt> operator for taking the address of a memory location. Cannot be overloaded.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#unsafeAddr,T">unsafeAddr</a></li>
</ul>
<pre class="listing"><span class="Keyword">var</span>
<span class="Identifier">buf</span><span class="Punctuation">:</span> <span class="Identifier">seq</span><span class="Punctuation">[</span><span class="Identifier">char</span><span class="Punctuation">]</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="CharLit">'a'</span><span class="Punctuation">,</span><span class="CharLit">'b'</span><span class="Punctuation">,</span><span class="CharLit">'c'</span><span class="Punctuation">]</span>
<span class="Identifier">p</span> <span class="Operator">=</span> <span class="Identifier">buf</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">]</span><span class="Operator">.</span><span class="Keyword">addr</span>
<span class="Identifier">echo</span> <span class="Identifier">p</span><span class="Operator">.</span><span class="Identifier">repr</span> <span class="Comment"># ref 0x7faa35c40059 --&gt; 'b'</span>
<span class="Identifier">echo</span> <span class="Identifier">p</span><span class="Punctuation">[</span><span class="Punctuation">]</span> <span class="Comment"># b</span></pre>
</dd>
<a id="unsafeAddr,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#unsafeAddr%2CT"><span class="Identifier">unsafeAddr</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Addr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Builtin <tt class="docutils literal"><span class="pre">addr</span></tt> operator for taking the address of a memory location. This works even for <tt class="docutils literal"><span class="pre">let</span></tt> variables or parameters for better interop with C and so it is considered even more unsafe than the ordinary <a class="reference external" href="#addr,T">addr</a>.</p>
<p><strong>Note</strong>: When you use it to write a wrapper for a C library, you should always check that the original library does never write to data behind the pointer that is returned from this procedure.</p>
<p>Cannot be overloaded.</p>
</dd>
<a id="typeof,untyped"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#typeof%2Cuntyped"><span class="Identifier">typeof</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a><span class="Other">;</span> <span class="Identifier">mode</span> <span class="Other">=</span> <span class="Identifier">typeOfIter</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;TypeOf&quot;</span><span class="Other">,</span>
<span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">compileTime</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Builtin <tt class="docutils literal"><span class="pre">typeof</span></tt> operation for accessing the type of an expression. Since version 0.20.0.
</dd>
<a id="internalNew,ref.T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#internalNew%2Cref.T"><span class="Identifier">internalNew</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Keyword">ref</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;New&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Leaked implementation detail. Do not use.
</dd>
<a id="new,ref.T,proc(ref.T)"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#new%2Cref.T%2Cproc%28ref.T%29"><span class="Identifier">new</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Keyword">ref</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">finalizer</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">ref</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">nimcall</span></span><span class="Other">.}</span></span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
<span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;NewFinalize&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Creates a new object of type <tt class="docutils literal"><span class="pre">T</span></tt> and returns a safe (traced) reference to it in <tt class="docutils literal"><span class="pre">a</span></tt>.</p>
<p>When the garbage collector frees the object, <tt class="docutils literal"><span class="pre">finalizer</span></tt> is called. The <tt class="docutils literal"><span class="pre">finalizer</span></tt> may not keep a reference to the object pointed to by <tt class="docutils literal"><span class="pre">x</span></tt>. The <tt class="docutils literal"><span class="pre">finalizer</span></tt> cannot prevent the GC from freeing the object.</p>
<p><strong>Note</strong>: The <tt class="docutils literal"><span class="pre">finalizer</span></tt> refers to the type <tt class="docutils literal"><span class="pre">T</span></tt>, not to the object! This means that for each object of type <tt class="docutils literal"><span class="pre">T</span></tt> the finalizer will be called!</p>
</dd>
<a id="wasMoved,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#wasMoved%2CT"><span class="Identifier">wasMoved</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">obj</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;WasMoved&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Resets an object <tt class="docutils literal"><span class="pre">obj</span></tt> to its initial (binary zero) value to signify it was &quot;moved&quot; and to signify its destructor should do nothing and ideally be optimized away.
</dd>
<a id="move,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#move%2CT"><span class="Identifier">move</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Move&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="high,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#high%2CT"><span class="Identifier">high</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a> <span class="Operator">|</span> <span class="Keyword">enum</span> <span class="Operator">|</span> <a href="system.html#range"><span class="Identifier">range</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;High&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;Deprecated since v1.4; there should not be `high(value)`. Use `high(type)`.&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated:</b> Deprecated since v1.4; there should not be `high(value)`. Use `high(type)`.
</div>
<p>Returns the highest possible value of an ordinal value <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>As a special semantic rule, <tt class="docutils literal"><span class="pre">x</span></tt> may also be a type identifier.</p>
<p><strong>This proc is deprecated</strong>, use this one instead:</p>
<ul class="simple"><li><a class="reference external" href="#high,typedesc[T]">high(typedesc)</a></li>
</ul>
<pre class="listing"><span class="Identifier">high</span><span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 9223372036854775807</span></pre>
</dd>
<a id="high,typedesc[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#high%2Ctypedesc%5BT%5D"><span class="Identifier">high</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a> <span class="Operator">|</span> <span class="Keyword">enum</span> <span class="Operator">|</span> <a href="system.html#range"><span class="Identifier">range</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;High&quot;</span><span class="Other">,</span>
<span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the highest possible value of an ordinal or enum type.</p>
<p><tt class="docutils literal"><span class="pre">high(int)</span></tt> is Nim's way of writing <span id="int-max_1">INT_MAX</span> or <span id="max-int_1">MAX_INT</span>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#low,typedesc[T]">low(typedesc)</a></li>
</ul>
<pre class="listing"><span class="Identifier">high</span><span class="Punctuation">(</span><span class="Identifier">int</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 9223372036854775807</span></pre>
</dd>
<a id="high,openArray[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#high%2CopenArray%5BT%5D"><span class="Identifier">high</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;High&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the highest possible index of a sequence <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#low,openArray[T]">low(openArray)</a></li>
</ul>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">s</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">7</span><span class="Punctuation">]</span>
<span class="Identifier">high</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 6</span>
<span class="Keyword">for</span> <span class="Identifier">i</span> <span class="Keyword">in</span> <span class="Identifier">low</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">)</span><span class="Operator">..</span><span class="Identifier">high</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
<span class="Identifier">echo</span> <span class="Identifier">s</span><span class="Punctuation">[</span><span class="Identifier">i</span><span class="Punctuation">]</span></pre>
</dd>
<a id="high,array[I,T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#high%2Carray%5BI%2CT%5D"><span class="Identifier">high</span></a><span class="Other">[</span><span class="Identifier">I</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#array"><span class="Identifier">array</span></a><span class="Other">[</span><span class="Identifier">I</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">I</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;High&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the highest possible index of an array <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#low,array[I,T]">low(array)</a></li>
</ul>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">arr</span> <span class="Operator">=</span> <span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">7</span><span class="Punctuation">]</span>
<span class="Identifier">high</span><span class="Punctuation">(</span><span class="Identifier">arr</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 6</span>
<span class="Keyword">for</span> <span class="Identifier">i</span> <span class="Keyword">in</span> <span class="Identifier">low</span><span class="Punctuation">(</span><span class="Identifier">arr</span><span class="Punctuation">)</span><span class="Operator">..</span><span class="Identifier">high</span><span class="Punctuation">(</span><span class="Identifier">arr</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
<span class="Identifier">echo</span> <span class="Identifier">arr</span><span class="Punctuation">[</span><span class="Identifier">i</span><span class="Punctuation">]</span></pre>
</dd>
<a id="high,typedesc[array[I,T]]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#high%2Ctypedesc%5Barray%5BI%2CT%5D%5D"><span class="Identifier">high</span></a><span class="Other">[</span><span class="Identifier">I</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">[</span><a href="system.html#array"><span class="Identifier">array</span></a><span class="Other">[</span><span class="Identifier">I</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">I</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;High&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the highest possible index of an array type.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#low,typedesc[array[I,T]]">low(typedesc[array])</a></li>
</ul>
<pre class="listing"><span class="Identifier">high</span><span class="Punctuation">(</span><span class="Identifier">array</span><span class="Punctuation">[</span><span class="DecNumber">7</span><span class="Punctuation">,</span> <span class="Identifier">int</span><span class="Punctuation">]</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 6</span></pre>
</dd>
<a id="high,cstring"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#high%2Ccstring"><span class="Identifier">high</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#cstring"><span class="Identifier">cstring</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;High&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the highest possible index of a compatible string <tt class="docutils literal"><span class="pre">x</span></tt>. This is sometimes an O(n) operation.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#low,cstring">low(cstring)</a></li>
</ul>
</dd>
<a id="high,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#high%2Cstring"><span class="Identifier">high</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;High&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the highest possible index of a string <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#low,string">low(string)</a></li>
</ul>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">str</span> <span class="Operator">=</span> <span class="StringLit">&quot;Hello world!&quot;</span>
<span class="Identifier">high</span><span class="Punctuation">(</span><span class="Identifier">str</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 11</span></pre>
</dd>
<a id="low,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#low%2CT"><span class="Identifier">low</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a> <span class="Operator">|</span> <span class="Keyword">enum</span> <span class="Operator">|</span> <a href="system.html#range"><span class="Identifier">range</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Low&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;Deprecated since v1.4; there should not be `low(value)`. Use `low(type)`.&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated:</b> Deprecated since v1.4; there should not be `low(value)`. Use `low(type)`.
</div>
<p>Returns the lowest possible value of an ordinal value <tt class="docutils literal"><span class="pre">x</span></tt>. As a special semantic rule, <tt class="docutils literal"><span class="pre">x</span></tt> may also be a type identifier.</p>
<p><strong>This proc is deprecated</strong>, use this one instead:</p>
<ul class="simple"><li><a class="reference external" href="#low,typedesc[T]">low(typedesc)</a></li>
</ul>
<pre class="listing"><span class="Identifier">low</span><span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; -9223372036854775808</span></pre>
</dd>
<a id="low,typedesc[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#low%2Ctypedesc%5BT%5D"><span class="Identifier">low</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a> <span class="Operator">|</span> <span class="Keyword">enum</span> <span class="Operator">|</span> <a href="system.html#range"><span class="Identifier">range</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Low&quot;</span><span class="Other">,</span>
<span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the lowest possible value of an ordinal or enum type.</p>
<p><tt class="docutils literal"><span class="pre">low(int)</span></tt> is Nim's way of writing <span id="int-min_1">INT_MIN</span> or <span id="min-int_1">MIN_INT</span>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#high,typedesc[T]">high(typedesc)</a></li>
</ul>
<pre class="listing"><span class="Identifier">low</span><span class="Punctuation">(</span><span class="Identifier">int</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; -9223372036854775808</span></pre>
</dd>
<a id="low,openArray[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#low%2CopenArray%5BT%5D"><span class="Identifier">low</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Low&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the lowest possible index of a sequence <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#high,openArray[T]">high(openArray)</a></li>
</ul>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">s</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">7</span><span class="Punctuation">]</span>
<span class="Identifier">low</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 0</span>
<span class="Keyword">for</span> <span class="Identifier">i</span> <span class="Keyword">in</span> <span class="Identifier">low</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">)</span><span class="Operator">..</span><span class="Identifier">high</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
<span class="Identifier">echo</span> <span class="Identifier">s</span><span class="Punctuation">[</span><span class="Identifier">i</span><span class="Punctuation">]</span></pre>
</dd>
<a id="low,array[I,T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#low%2Carray%5BI%2CT%5D"><span class="Identifier">low</span></a><span class="Other">[</span><span class="Identifier">I</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#array"><span class="Identifier">array</span></a><span class="Other">[</span><span class="Identifier">I</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">I</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Low&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the lowest possible index of an array <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#high,array[I,T]">high(array)</a></li>
</ul>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">arr</span> <span class="Operator">=</span> <span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">7</span><span class="Punctuation">]</span>
<span class="Identifier">low</span><span class="Punctuation">(</span><span class="Identifier">arr</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 0</span>
<span class="Keyword">for</span> <span class="Identifier">i</span> <span class="Keyword">in</span> <span class="Identifier">low</span><span class="Punctuation">(</span><span class="Identifier">arr</span><span class="Punctuation">)</span><span class="Operator">..</span><span class="Identifier">high</span><span class="Punctuation">(</span><span class="Identifier">arr</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
<span class="Identifier">echo</span> <span class="Identifier">arr</span><span class="Punctuation">[</span><span class="Identifier">i</span><span class="Punctuation">]</span></pre>
</dd>
<a id="low,typedesc[array[I,T]]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#low%2Ctypedesc%5Barray%5BI%2CT%5D%5D"><span class="Identifier">low</span></a><span class="Other">[</span><span class="Identifier">I</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">[</span><a href="system.html#array"><span class="Identifier">array</span></a><span class="Other">[</span><span class="Identifier">I</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">I</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Low&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the lowest possible index of an array type.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#high,typedesc[array[I,T]]">high(typedesc[array])</a></li>
</ul>
<pre class="listing"><span class="Identifier">low</span><span class="Punctuation">(</span><span class="Identifier">array</span><span class="Punctuation">[</span><span class="DecNumber">7</span><span class="Punctuation">,</span> <span class="Identifier">int</span><span class="Punctuation">]</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 0</span></pre>
</dd>
<a id="low,cstring"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#low%2Ccstring"><span class="Identifier">low</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#cstring"><span class="Identifier">cstring</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Low&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the lowest possible index of a compatible string <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#high,cstring">high(cstring)</a></li>
</ul>
</dd>
<a id="low,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#low%2Cstring"><span class="Identifier">low</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Low&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the lowest possible index of a string <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#high,string">high(string)</a></li>
</ul>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">str</span> <span class="Operator">=</span> <span class="StringLit">&quot;Hello world!&quot;</span>
<span class="Identifier">low</span><span class="Punctuation">(</span><span class="Identifier">str</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 0</span></pre>
</dd>
<a id="shallowCopy,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shallowCopy%2CT%2CT"><span class="Identifier">shallowCopy</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShallowCopy&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Use this instead of <tt class="docutils literal"><span class="pre">=</span></tt> for a <span id="shallow-copy_1">shallow copy</span>.</p>
<p>The shallow copy only changes the semantics for sequences and strings (and types which contain those).</p>
<p>Be careful with the changed semantics though! There is a reason why the default assignment does a deep copy of sequences and strings.</p>
</dd>
<a id="[],T,I"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%5B%5D%2CT%2CI"><span class="Identifier">`[]`</span></a><span class="Other">[</span><span class="Identifier">I</span><span class="Other">:</span> <a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a><span class="Other">;</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">I</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ArrGet&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="[]=,T,I,sinkS"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%5B%5D%3D%2CT%2CI%2CsinkS"><span class="Identifier">`[]=`</span></a><span class="Other">[</span><span class="Identifier">I</span><span class="Other">:</span> <a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a><span class="Other">;</span> <span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">S</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <span class="Identifier">I</span><span class="Other">;</span> <span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#sink"><span class="Identifier">sink</span></a> <span class="Identifier">S</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span>
<span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ArrPut&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="=,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%2CT%2CT"><span class="Identifier">`=`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">dest</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">src</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Asgn&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="=destroy,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3Ddestroy%2CT"><span class="Identifier">`=destroy`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Destroy&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Generic <span id="destructor_1">destructor</span> implementation that can be overridden.
</dd>
<a id="=sink,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3Dsink%2CT%2CT"><span class="Identifier">`=sink`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Asgn&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Generic <span id="sink_1">sink</span> implementation that can be overridden.
</dd>
<a id="..,sinkT,sinkU"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#..%2CsinkT%2CsinkU"><span class="Identifier">`..`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">U</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <a href="system.html#sink"><span class="Identifier">sink</span></a> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="system.html#sink"><span class="Identifier">sink</span></a> <span class="Identifier">U</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#HSlice"><span class="Identifier">HSlice</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">U</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span>
<span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DotDot&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Binary <span id="slice_1">slice</span> operator that constructs an interval <tt class="docutils literal"><span class="pre">[a, b]</span></tt>, both <tt class="docutils literal"><span class="pre">a</span></tt> and <tt class="docutils literal"><span class="pre">b</span></tt> are inclusive.</p>
<p>Slices can also be used in the set constructor and in ordinal case statements, but then they are special-cased by the compiler.</p>
<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="Punctuation">[</span><span class="DecNumber">10</span><span class="Punctuation">,</span> <span class="DecNumber">20</span><span class="Punctuation">,</span> <span class="DecNumber">30</span><span class="Punctuation">,</span> <span class="DecNumber">40</span><span class="Punctuation">,</span> <span class="DecNumber">50</span><span class="Punctuation">]</span>
<span class="Identifier">echo</span> <span class="Identifier">a</span><span class="Punctuation">[</span><span class="DecNumber">2</span> <span class="Operator">..</span> <span class="DecNumber">3</span><span class="Punctuation">]</span> <span class="Comment"># @[30, 40]</span></pre>
</dd>
<a id="..,sinkT"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#..%2CsinkT"><span class="Identifier">`..`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <a href="system.html#sink"><span class="Identifier">sink</span></a> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#HSlice"><span class="Identifier">HSlice</span></a><span class="Other">[</span><a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DotDot&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Unary <span id="slice_2">slice</span> operator that constructs an interval <tt class="docutils literal"><span class="pre">[default(int), b]</span></tt>.<pre class="listing"><span class="Keyword">let</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="Punctuation">[</span><span class="DecNumber">10</span><span class="Punctuation">,</span> <span class="DecNumber">20</span><span class="Punctuation">,</span> <span class="DecNumber">30</span><span class="Punctuation">,</span> <span class="DecNumber">40</span><span class="Punctuation">,</span> <span class="DecNumber">50</span><span class="Punctuation">]</span>
<span class="Identifier">echo</span> <span class="Identifier">a</span><span class="Punctuation">[</span><span class="Operator">..</span> <span class="DecNumber">2</span><span class="Punctuation">]</span> <span class="Comment"># @[10, 20, 30]</span></pre>
</dd>
<a id="succ,T,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#succ%2CT%2Cint"><span class="Identifier">succ</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Succ&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the <tt class="docutils literal"><span class="pre">y</span></tt>-th successor (default: 1) of the value <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>If such a value does not exist, <tt class="docutils literal"><span class="pre">OverflowDefect</span></tt> is raised or a compile time error occurs.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">succ</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">6</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">succ</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">8</span></pre>
</dd>
<a id="pred,T,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#pred%2CT%2Cint"><span class="Identifier">pred</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Pred&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the <tt class="docutils literal"><span class="pre">y</span></tt>-th predecessor (default: 1) of the value <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>If such a value does not exist, <tt class="docutils literal"><span class="pre">OverflowDefect</span></tt> is raised or a compile time error occurs.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">pred</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">pred</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">2</span></pre>
</dd>
<a id="inc,T,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#inc%2CT%2Cint"><span class="Identifier">inc</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Inc&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Increments the ordinal <tt class="docutils literal"><span class="pre">x</span></tt> by <tt class="docutils literal"><span class="pre">y</span></tt>.</p>
<p>If such a value does not exist, <tt class="docutils literal"><span class="pre">OverflowDefect</span></tt> is raised or a compile time error occurs. This is a short notation for: <tt class="docutils literal"><span class="pre">x = succ(x, y)</span></tt>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">i</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Whitespace">
</span><span class="Identifier">inc</span><span class="Punctuation">(</span><span class="Identifier">i</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">i</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Whitespace">
</span><span class="Identifier">inc</span><span class="Punctuation">(</span><span class="Identifier">i</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">i</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">6</span></pre>
</dd>
<a id="dec,T,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#dec%2CT%2Cint"><span class="Identifier">dec</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Dec&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Decrements the ordinal <tt class="docutils literal"><span class="pre">x</span></tt> by <tt class="docutils literal"><span class="pre">y</span></tt>.</p>
<p>If such a value does not exist, <tt class="docutils literal"><span class="pre">OverflowDefect</span></tt> is raised or a compile time error occurs. This is a short notation for: <tt class="docutils literal"><span class="pre">x = pred(x, y)</span></tt>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">i</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Whitespace">
</span><span class="Identifier">dec</span><span class="Punctuation">(</span><span class="Identifier">i</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">i</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">1</span><span class="Whitespace">
</span><span class="Identifier">dec</span><span class="Punctuation">(</span><span class="Identifier">i</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">i</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">2</span></pre>
</dd>
<a id="ze,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#ze%2Cint8"><span class="Identifier">ze</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
zero extends a smaller integer type to <tt class="docutils literal"><span class="pre">int</span></tt>. This treats <tt class="docutils literal"><span class="pre">x</span></tt> as unsigned. <strong>Deprecated since version 0.19.9</strong>: Use unsigned integers instead.
</dd>
<a id="ze,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#ze%2Cint16"><span class="Identifier">ze</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
zero extends a smaller integer type to <tt class="docutils literal"><span class="pre">int</span></tt>. This treats <tt class="docutils literal"><span class="pre">x</span></tt> as unsigned. <strong>Deprecated since version 0.19.9</strong>: Use unsigned integers instead.
</dd>
<a id="ze64,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#ze64%2Cint8"><span class="Identifier">ze64</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
zero extends a smaller integer type to <tt class="docutils literal"><span class="pre">int64</span></tt>. This treats <tt class="docutils literal"><span class="pre">x</span></tt> as unsigned. <strong>Deprecated since version 0.19.9</strong>: Use unsigned integers instead.
</dd>
<a id="ze64,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#ze64%2Cint16"><span class="Identifier">ze64</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
zero extends a smaller integer type to <tt class="docutils literal"><span class="pre">int64</span></tt>. This treats <tt class="docutils literal"><span class="pre">x</span></tt> as unsigned. <strong>Deprecated since version 0.19.9</strong>: Use unsigned integers instead.
</dd>
<a id="ze64,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#ze64%2Cint32"><span class="Identifier">ze64</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
zero extends a smaller integer type to <tt class="docutils literal"><span class="pre">int64</span></tt>. This treats <tt class="docutils literal"><span class="pre">x</span></tt> as unsigned. <strong>Deprecated since version 0.19.9</strong>: Use unsigned integers instead.
</dd>
<a id="ze64,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#ze64%2Cint"><span class="Identifier">ze64</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
zero extends a smaller integer type to <tt class="docutils literal"><span class="pre">int64</span></tt>. This treats <tt class="docutils literal"><span class="pre">x</span></tt> as unsigned. Does nothing if the size of an <tt class="docutils literal"><span class="pre">int</span></tt> is the same as <tt class="docutils literal"><span class="pre">int64</span></tt>. (This is the case on 64 bit processors.) <strong>Deprecated since version 0.19.9</strong>: Use unsigned integers instead.
</dd>
<a id="toU8,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#toU8%2Cint"><span class="Identifier">toU8</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
treats <tt class="docutils literal"><span class="pre">x</span></tt> as unsigned and converts it to a byte by taking the last 8 bits from <tt class="docutils literal"><span class="pre">x</span></tt>. <strong>Deprecated since version 0.19.9</strong>: Use unsigned integers instead.
</dd>
<a id="toU16,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#toU16%2Cint"><span class="Identifier">toU16</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
treats <tt class="docutils literal"><span class="pre">x</span></tt> as unsigned and converts it to an <tt class="docutils literal"><span class="pre">int16</span></tt> by taking the last 16 bits from <tt class="docutils literal"><span class="pre">x</span></tt>. <strong>Deprecated since version 0.19.9</strong>: Use unsigned integers instead.
</dd>
<a id="toU32,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#toU32%2Cint64"><span class="Identifier">toU32</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">deprecated</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated</b>
</div>
treats <tt class="docutils literal"><span class="pre">x</span></tt> as unsigned and converts it to an <tt class="docutils literal"><span class="pre">int32</span></tt> by taking the last 32 bits from <tt class="docutils literal"><span class="pre">x</span></tt>. <strong>Deprecated since version 0.19.9</strong>: Use unsigned integers instead.
</dd>
<a id="+,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cint"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryPlusI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Unary <tt class="docutils literal"><span class="pre">+</span></tt> operator for an integer. Has no effect.
</dd>
<a id="+,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cint8"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryPlusI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cint16"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryPlusI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cint32"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryPlusI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cint64"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryPlusI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cint"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryMinusI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Unary <tt class="docutils literal"><span class="pre">-</span></tt> operator for an integer. Negates <tt class="docutils literal"><span class="pre">x</span></tt>.
</dd>
<a id="-,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cint8"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryMinusI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cint16"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryMinusI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cint32"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryMinusI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cint64"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryMinusI64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="not,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#not%2Cint"><span class="Identifier">`not`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitnotI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Computes the <tt class="docutils literal"><span class="pre">bitwise complement</span></tt> of the integer <tt class="docutils literal"><span class="pre">x</span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="DecNumber">0&apos;</span><span class="Identifier">u8</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">255</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="DecNumber">0&apos;i8</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">1</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="DecNumber">1000&apos;</span><span class="Identifier">u16</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">64535</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="DecNumber">1000&apos;i16</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">1001</span></pre>
</dd>
<a id="not,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#not%2Cint8"><span class="Identifier">`not`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitnotI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="not,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#not%2Cint16"><span class="Identifier">`not`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitnotI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="not,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#not%2Cint32"><span class="Identifier">`not`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitnotI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="not,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#not%2Cint64"><span class="Identifier">`not`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitnotI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cint%2Cint"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AddI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Binary <tt class="docutils literal"><span class="pre">+</span></tt> operator for an integer.
</dd>
<a id="+,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cint8%2Cint8"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AddI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cint16%2Cint16"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AddI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cint32%2Cint32"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AddI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cint64%2Cint64"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AddI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cint%2Cint"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SubI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Binary <tt class="docutils literal"><span class="pre">-</span></tt> operator for an integer.
</dd>
<a id="-,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cint8%2Cint8"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SubI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cint16%2Cint16"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SubI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cint32%2Cint32"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SubI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cint64%2Cint64"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SubI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%2Cint%2Cint"><span class="Identifier">`*`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MulI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Binary <tt class="docutils literal"><span class="pre">*</span></tt> operator for an integer.
</dd>
<a id="*,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%2Cint8%2Cint8"><span class="Identifier">`*`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MulI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%2Cint16%2Cint16"><span class="Identifier">`*`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MulI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%2Cint32%2Cint32"><span class="Identifier">`*`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MulI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%2Cint64%2Cint64"><span class="Identifier">`*`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MulI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="div,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#div%2Cint%2Cint"><span class="Identifier">`div`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DivI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Computes the integer division.</p>
<p>This is roughly the same as <tt class="docutils literal"><span class="pre">math.trunc(x/y).int</span></tt>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Whitespace"> </span><span class="Keyword">div</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">0</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Whitespace"> </span><span class="Keyword">div</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">1</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="DecNumber">3</span><span class="Whitespace"> </span><span class="Keyword">div</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">1</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="DecNumber">7</span><span class="Whitespace"> </span><span class="Keyword">div</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">7</span><span class="Whitespace"> </span><span class="Keyword">div</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">2</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="DecNumber">7</span><span class="Whitespace"> </span><span class="Keyword">div</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">3</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">2</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">7</span><span class="Whitespace"> </span><span class="Keyword">div</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">3</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">2</span></pre>
</dd>
<a id="div,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#div%2Cint8%2Cint8"><span class="Identifier">`div`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DivI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="div,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#div%2Cint16%2Cint16"><span class="Identifier">`div`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DivI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="div,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#div%2Cint32%2Cint32"><span class="Identifier">`div`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DivI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="div,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#div%2Cint64%2Cint64"><span class="Identifier">`div`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DivI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="mod,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#mod%2Cint%2Cint"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ModI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Computes the integer modulo operation (remainder).</p>
<p>This is the same as <tt class="docutils literal"><span class="pre">x - (x div y) * y</span></tt>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="DecNumber">7</span><span class="Whitespace"> </span><span class="Keyword">mod</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">7</span><span class="Whitespace"> </span><span class="Keyword">mod</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">2</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="DecNumber">7</span><span class="Whitespace"> </span><span class="Keyword">mod</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">5</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="Operator">-</span><span class="DecNumber">7</span><span class="Whitespace"> </span><span class="Keyword">mod</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">5</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">2</span></pre>
</dd>
<a id="mod,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#mod%2Cint8%2Cint8"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ModI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="mod,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#mod%2Cint16%2Cint16"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ModI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="mod,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#mod%2Cint32%2Cint32"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ModI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="mod,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#mod%2Cint64%2Cint64"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ModI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shr,int,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shr%2Cint%2CSomeInteger"><span class="Identifier">`shr`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AshrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Computes the <tt class="docutils literal"><span class="pre">shift right</span></tt> operation of <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>, filling vacant bit positions with the sign bit.</p>
<p><strong>Note</strong>: <a class="reference external" href="manual.html#syntax-precedence">Operator precedence</a> is different than in <em>C</em>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#ashr,int,SomeInteger">ashr func</a> for arithmetic shift right</li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="BinNumber">0b0001_0000&apos;i8</span><span class="Whitespace"> </span><span class="Keyword">shr</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="BinNumber">0b0000_0100&apos;i8</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="BinNumber">0b0000_0001&apos;i8</span><span class="Whitespace"> </span><span class="Keyword">shr</span><span class="Whitespace"> </span><span class="DecNumber">1</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="BinNumber">0b0000_0000&apos;i8</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="BinNumber">0b1000_0000&apos;i8</span><span class="Whitespace"> </span><span class="Keyword">shr</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="BinNumber">0b1111_1000&apos;i8</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">1</span><span class="Whitespace"> </span><span class="Keyword">shr</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">1</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="DecNumber">1</span><span class="Whitespace"> </span><span class="Keyword">shr</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">0</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="DecNumber">16</span><span class="Whitespace"> </span><span class="Keyword">shr</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">16</span><span class="Whitespace"> </span><span class="Keyword">shr</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="DecNumber">4</span></pre>
</dd>
<a id="shr,int8,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shr%2Cint8%2CSomeInteger"><span class="Identifier">`shr`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AshrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shr,int16,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shr%2Cint16%2CSomeInteger"><span class="Identifier">`shr`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AshrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shr,int32,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shr%2Cint32%2CSomeInteger"><span class="Identifier">`shr`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AshrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shr,int64,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shr%2Cint64%2CSomeInteger"><span class="Identifier">`shr`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AshrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shl,int,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shl%2Cint%2CSomeInteger"><span class="Identifier">`shl`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShlI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Computes the <tt class="docutils literal"><span class="pre">shift left</span></tt> operation of <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>.</p>
<p><strong>Note</strong>: <a class="reference external" href="manual.html#syntax-precedence">Operator precedence</a> is different than in <em>C</em>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="DecNumber">1&apos;i32</span><span class="Whitespace"> </span><span class="Keyword">shl</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="HexNumber">0x0000_0010</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="DecNumber">1&apos;i64</span><span class="Whitespace"> </span><span class="Keyword">shl</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="HexNumber">0x0000_0000_0000_0010</span></pre>
</dd>
<a id="shl,int8,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shl%2Cint8%2CSomeInteger"><span class="Identifier">`shl`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShlI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shl,int16,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shl%2Cint16%2CSomeInteger"><span class="Identifier">`shl`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShlI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shl,int32,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shl%2Cint32%2CSomeInteger"><span class="Identifier">`shl`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShlI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shl,int64,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shl%2Cint64%2CSomeInteger"><span class="Identifier">`shl`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShlI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="ashr,int,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#ashr%2Cint%2CSomeInteger"><span class="Identifier">ashr</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AshrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Shifts right by pushing copies of the leftmost bit in from the left, and let the rightmost bits fall off.</p>
<p>Note that <tt class="docutils literal"><span class="pre">ashr</span></tt> is not an operator so use the normal function call syntax for it.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#shr,int,SomeInteger">shr func</a></li>
</ul>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">ashr</span><span class="Punctuation">(</span><span class="BinNumber">0b0001_0000&apos;i8</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="BinNumber">0b0000_0100&apos;i8</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">ashr</span><span class="Punctuation">(</span><span class="BinNumber">0b1000_0000&apos;i8</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">8</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="BinNumber">0b1111_1111&apos;i8</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">ashr</span><span class="Punctuation">(</span><span class="BinNumber">0b1000_0000&apos;i8</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">1</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="BinNumber">0b1100_0000&apos;i8</span></pre>
</dd>
<a id="ashr,int8,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#ashr%2Cint8%2CSomeInteger"><span class="Identifier">ashr</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AshrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="ashr,int16,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#ashr%2Cint16%2CSomeInteger"><span class="Identifier">ashr</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AshrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="ashr,int32,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#ashr%2Cint32%2CSomeInteger"><span class="Identifier">ashr</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AshrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="ashr,int64,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#ashr%2Cint64%2CSomeInteger"><span class="Identifier">ashr</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AshrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="and,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#and%2Cint%2Cint"><span class="Identifier">`and`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitandI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Computes the <tt class="docutils literal"><span class="pre">bitwise and</span></tt> of numbers <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="BinNumber">0b0011</span><span class="Whitespace"> </span><span class="Keyword">and</span><span class="Whitespace"> </span><span class="BinNumber">0b0101</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="BinNumber">0b0001</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="BinNumber">0b0111</span><span class="Whitespace"> </span><span class="Keyword">and</span><span class="Whitespace"> </span><span class="BinNumber">0b1100</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="BinNumber">0b0100</span></pre>
</dd>
<a id="and,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#and%2Cint8%2Cint8"><span class="Identifier">`and`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitandI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="and,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#and%2Cint16%2Cint16"><span class="Identifier">`and`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitandI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="and,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#and%2Cint32%2Cint32"><span class="Identifier">`and`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitandI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="and,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#and%2Cint64%2Cint64"><span class="Identifier">`and`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitandI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="or,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#or%2Cint%2Cint"><span class="Identifier">`or`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Computes the <tt class="docutils literal"><span class="pre">bitwise or</span></tt> of numbers <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="BinNumber">0b0011</span><span class="Whitespace"> </span><span class="Keyword">or</span><span class="Whitespace"> </span><span class="BinNumber">0b0101</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="BinNumber">0b0111</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="BinNumber">0b0111</span><span class="Whitespace"> </span><span class="Keyword">or</span><span class="Whitespace"> </span><span class="BinNumber">0b1100</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="BinNumber">0b1111</span></pre>
</dd>
<a id="or,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#or%2Cint8%2Cint8"><span class="Identifier">`or`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="or,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#or%2Cint16%2Cint16"><span class="Identifier">`or`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="or,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#or%2Cint32%2Cint32"><span class="Identifier">`or`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="or,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#or%2Cint64%2Cint64"><span class="Identifier">`or`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="xor,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#xor%2Cint%2Cint"><span class="Identifier">`xor`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitxorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Computes the <tt class="docutils literal"><span class="pre">bitwise xor</span></tt> of numbers <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="BinNumber">0b0011</span><span class="Whitespace"> </span><span class="Keyword">xor</span><span class="Whitespace"> </span><span class="BinNumber">0b0101</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="BinNumber">0b0110</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="BinNumber">0b0111</span><span class="Whitespace"> </span><span class="Keyword">xor</span><span class="Whitespace"> </span><span class="BinNumber">0b1100</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="BinNumber">0b1011</span></pre>
</dd>
<a id="xor,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#xor%2Cint8%2Cint8"><span class="Identifier">`xor`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitxorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="xor,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#xor%2Cint16%2Cint16"><span class="Identifier">`xor`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitxorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="xor,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#xor%2Cint32%2Cint32"><span class="Identifier">`xor`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitxorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="xor,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#xor%2Cint64%2Cint64"><span class="Identifier">`xor`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitxorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="not,uint"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#not%2Cuint"><span class="Identifier">`not`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitnotI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Computes the <tt class="docutils literal"><span class="pre">bitwise complement</span></tt> of the integer <tt class="docutils literal"><span class="pre">x</span></tt>.
</dd>
<a id="not,uint8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#not%2Cuint8"><span class="Identifier">`not`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitnotI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="not,uint16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#not%2Cuint16"><span class="Identifier">`not`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitnotI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="not,uint32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#not%2Cuint32"><span class="Identifier">`not`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitnotI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="not,uint64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#not%2Cuint64"><span class="Identifier">`not`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitnotI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shr,uint,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shr%2Cuint%2CSomeInteger"><span class="Identifier">`shr`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Computes the <tt class="docutils literal"><span class="pre">shift right</span></tt> operation of <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>.
</dd>
<a id="shr,uint8,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shr%2Cuint8%2CSomeInteger"><span class="Identifier">`shr`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shr,uint16,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shr%2Cuint16%2CSomeInteger"><span class="Identifier">`shr`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shr,uint32,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shr%2Cuint32%2CSomeInteger"><span class="Identifier">`shr`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shr,uint64,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shr%2Cuint64%2CSomeInteger"><span class="Identifier">`shr`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShrI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shl,uint,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shl%2Cuint%2CSomeInteger"><span class="Identifier">`shl`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShlI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Computes the <tt class="docutils literal"><span class="pre">shift left</span></tt> operation of <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>.
</dd>
<a id="shl,uint8,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shl%2Cuint8%2CSomeInteger"><span class="Identifier">`shl`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShlI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shl,uint16,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shl%2Cuint16%2CSomeInteger"><span class="Identifier">`shl`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShlI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shl,uint32,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shl%2Cuint32%2CSomeInteger"><span class="Identifier">`shl`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShlI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="shl,uint64,SomeInteger"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#shl%2Cuint64%2CSomeInteger"><span class="Identifier">`shl`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ShlI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="and,uint,uint"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#and%2Cuint%2Cuint"><span class="Identifier">`and`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitandI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Computes the <tt class="docutils literal"><span class="pre">bitwise and</span></tt> of numbers <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>.
</dd>
<a id="and,uint8,uint8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#and%2Cuint8%2Cuint8"><span class="Identifier">`and`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitandI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="and,uint16,uint16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#and%2Cuint16%2Cuint16"><span class="Identifier">`and`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitandI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="and,uint32,uint32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#and%2Cuint32%2Cuint32"><span class="Identifier">`and`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitandI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="and,uint64,uint64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#and%2Cuint64%2Cuint64"><span class="Identifier">`and`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitandI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="or,uint,uint"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#or%2Cuint%2Cuint"><span class="Identifier">`or`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Computes the <tt class="docutils literal"><span class="pre">bitwise or</span></tt> of numbers <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>.
</dd>
<a id="or,uint8,uint8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#or%2Cuint8%2Cuint8"><span class="Identifier">`or`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="or,uint16,uint16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#or%2Cuint16%2Cuint16"><span class="Identifier">`or`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="or,uint32,uint32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#or%2Cuint32%2Cuint32"><span class="Identifier">`or`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="or,uint64,uint64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#or%2Cuint64%2Cuint64"><span class="Identifier">`or`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="xor,uint,uint"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#xor%2Cuint%2Cuint"><span class="Identifier">`xor`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitxorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Computes the <tt class="docutils literal"><span class="pre">bitwise xor</span></tt> of numbers <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>.
</dd>
<a id="xor,uint8,uint8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#xor%2Cuint8%2Cuint8"><span class="Identifier">`xor`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitxorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="xor,uint16,uint16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#xor%2Cuint16%2Cuint16"><span class="Identifier">`xor`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitxorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="xor,uint32,uint32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#xor%2Cuint32%2Cuint32"><span class="Identifier">`xor`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitxorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="xor,uint64,uint64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#xor%2Cuint64%2Cuint64"><span class="Identifier">`xor`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;BitxorI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,uint,uint"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cuint%2Cuint"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AddU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Binary <tt class="docutils literal"><span class="pre">+</span></tt> operator for unsigned integers.
</dd>
<a id="+,uint8,uint8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cuint8%2Cuint8"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AddU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,uint16,uint16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cuint16%2Cuint16"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AddU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,uint32,uint32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cuint32%2Cuint32"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AddU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,uint64,uint64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cuint64%2Cuint64"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AddU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,uint,uint"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cuint%2Cuint"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SubU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Binary <tt class="docutils literal"><span class="pre">-</span></tt> operator for unsigned integers.
</dd>
<a id="-,uint8,uint8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cuint8%2Cuint8"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SubU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,uint16,uint16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cuint16%2Cuint16"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SubU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,uint32,uint32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cuint32%2Cuint32"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SubU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,uint64,uint64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cuint64%2Cuint64"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SubU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*,uint,uint"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%2Cuint%2Cuint"><span class="Identifier">`*`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MulU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Binary <tt class="docutils literal"><span class="pre">*</span></tt> operator for unsigned integers.
</dd>
<a id="*,uint8,uint8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%2Cuint8%2Cuint8"><span class="Identifier">`*`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MulU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*,uint16,uint16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%2Cuint16%2Cuint16"><span class="Identifier">`*`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MulU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*,uint32,uint32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%2Cuint32%2Cuint32"><span class="Identifier">`*`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MulU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*,uint64,uint64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%2Cuint64%2Cuint64"><span class="Identifier">`*`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MulU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="div,uint,uint"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#div%2Cuint%2Cuint"><span class="Identifier">`div`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DivU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Computes the integer division for unsigned integers. This is roughly the same as <tt class="docutils literal"><span class="pre">trunc(x/y)</span></tt>.
</dd>
<a id="div,uint8,uint8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#div%2Cuint8%2Cuint8"><span class="Identifier">`div`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DivU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="div,uint16,uint16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#div%2Cuint16%2Cuint16"><span class="Identifier">`div`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DivU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="div,uint32,uint32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#div%2Cuint32%2Cuint32"><span class="Identifier">`div`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DivU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="div,uint64,uint64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#div%2Cuint64%2Cuint64"><span class="Identifier">`div`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DivU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="mod,uint,uint"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#mod%2Cuint%2Cuint"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ModU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Computes the integer modulo operation (remainder) for unsigned integers. This is the same as <tt class="docutils literal"><span class="pre">x - (x div y) * y</span></tt>.
</dd>
<a id="mod,uint8,uint8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#mod%2Cuint8%2Cuint8"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ModU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="mod,uint16,uint16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#mod%2Cuint16%2Cuint16"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ModU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="mod,uint32,uint32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#mod%2Cuint32%2Cuint32"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ModU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="mod,uint64,uint64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#mod%2Cuint64%2Cuint64"><span class="Identifier">`mod`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ModU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+%,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%25%2Cint%2Cint"><span class="Identifier">`+%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Treats <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt> as unsigned and adds them.</p>
<p>The result is truncated to fit into the result. This implements modulo arithmetic. No overflow errors are possible.</p>
</dd>
<a id="+%,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%25%2Cint8%2Cint8"><span class="Identifier">`+%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+%,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%25%2Cint16%2Cint16"><span class="Identifier">`+%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+%,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%25%2Cint32%2Cint32"><span class="Identifier">`+%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+%,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%25%2Cint64%2Cint64"><span class="Identifier">`+%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-%,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%25%2Cint%2Cint"><span class="Identifier">`-%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Treats <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt> as unsigned and subtracts them.</p>
<p>The result is truncated to fit into the result. This implements modulo arithmetic. No overflow errors are possible.</p>
</dd>
<a id="-%,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%25%2Cint8%2Cint8"><span class="Identifier">`-%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-%,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%25%2Cint16%2Cint16"><span class="Identifier">`-%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-%,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%25%2Cint32%2Cint32"><span class="Identifier">`-%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-%,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%25%2Cint64%2Cint64"><span class="Identifier">`-%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*%,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%25%2Cint%2Cint"><span class="Identifier">`*%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Treats <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt> as unsigned and multiplies them.</p>
<p>The result is truncated to fit into the result. This implements modulo arithmetic. No overflow errors are possible.</p>
</dd>
<a id="*%,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%25%2Cint8%2Cint8"><span class="Identifier">`*%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*%,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%25%2Cint16%2Cint16"><span class="Identifier">`*%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*%,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%25%2Cint32%2Cint32"><span class="Identifier">`*%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*%,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%25%2Cint64%2Cint64"><span class="Identifier">`*%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="/%,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2F%25%2Cint%2Cint"><span class="Identifier">`/%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Treats <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt> as unsigned and divides them.</p>
<p>The result is truncated to fit into the result. This implements modulo arithmetic. No overflow errors are possible.</p>
</dd>
<a id="/%,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2F%25%2Cint8%2Cint8"><span class="Identifier">`/%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="/%,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2F%25%2Cint16%2Cint16"><span class="Identifier">`/%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="/%,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2F%25%2Cint32%2Cint32"><span class="Identifier">`/%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="/%,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2F%25%2Cint64%2Cint64"><span class="Identifier">`/%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="%%,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%25%25%2Cint%2Cint"><span class="Identifier">`%%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Treats <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt> as unsigned and compute the modulo of <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>.</p>
<p>The result is truncated to fit into the result. This implements modulo arithmetic. No overflow errors are possible.</p>
</dd>
<a id="%%,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%25%25%2Cint8%2Cint8"><span class="Identifier">`%%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="%%,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%25%25%2Cint16%2Cint16"><span class="Identifier">`%%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="%%,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%25%25%2Cint32%2Cint32"><span class="Identifier">`%%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="%%,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%25%25%2Cint64%2Cint64"><span class="Identifier">`%%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+=,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%3D%2CT%2CT"><span class="Identifier">`+=`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Inc&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Increments an integer.
</dd>
<a id="-=,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%3D%2CT%2CT"><span class="Identifier">`-=`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Dec&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Decrements an integer.
</dd>
<a id="*=,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%3D%2CT%2CT"><span class="Identifier">`*=`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeInteger"><span class="Identifier">SomeInteger</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Binary <tt class="docutils literal"><span class="pre">*=</span></tt> operator for integers.
</dd>
<a id="==,Enum,Enum"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2CEnum%2CEnum"><span class="Identifier">`==`</span></a><span class="Other">[</span><span class="Identifier">Enum</span><span class="Other">:</span> <span class="Keyword">enum</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">Enum</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqEnum&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Checks whether values within the <em>same enum</em> have the same underlying value.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">type</span><span class="Whitespace">
</span><span class="Identifier">Enum1</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Keyword">enum</span><span class="Whitespace">
</span><span class="Identifier">field1</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">field2</span><span class="Whitespace">
</span><span class="Identifier">Enum2</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Keyword">enum</span><span class="Whitespace">
</span><span class="Identifier">place1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">place2</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Whitespace">
</span><span class="Keyword">var</span><span class="Whitespace">
</span><span class="Identifier">e1</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Identifier">field1</span><span class="Whitespace">
</span><span class="Identifier">e2</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Identifier">Enum1</span><span class="Punctuation">(</span><span class="Identifier">place2</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">e1</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Identifier">e2</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="Identifier">compiles</span><span class="Punctuation">(</span><span class="Identifier">e1</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Identifier">place2</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Comment"># raises error</span></pre>
</dd>
<a id="==,pointer,pointer"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cpointer%2Cpointer"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqRef&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Checks for equality between two <tt class="docutils literal"><span class="pre">pointer</span></tt> variables.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Comment"># this is a wildly dangerous example</span><span class="Whitespace">
</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Keyword">cast</span><span class="Punctuation">[</span><span class="Identifier">pointer</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="DecNumber">0</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">b</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Keyword">cast</span><span class="Punctuation">[</span><span class="Identifier">pointer</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Keyword">nil</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Identifier">b</span><span class="Whitespace"> </span><span class="Comment"># true due to the special meaning of `nil`/0 as a pointer</span></pre>
</dd>
<a id="==,string,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cstring%2Cstring"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqStr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Checks for equality between two <tt class="docutils literal"><span class="pre">string</span></tt> variables.
</dd>
<a id="==,char,char"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cchar%2Cchar"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqCh&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Checks for equality between two <tt class="docutils literal"><span class="pre">char</span></tt> variables.
</dd>
<a id="==,bool,bool"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cbool%2Cbool"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqB&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Checks for equality between two <tt class="docutils literal"><span class="pre">bool</span></tt> variables.
</dd>
<a id="==,set[T],set[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cset%5BT%5D%2Cset%5BT%5D"><span class="Identifier">`==`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqSet&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Checks for equality between two variables of type <tt class="docutils literal"><span class="pre">set</span></tt>.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">}</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">}</span><span class="Whitespace"> </span><span class="Comment"># duplication in sets is ignored</span></pre>
</dd>
<a id="==,ref.T,ref.T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cref.T%2Cref.T"><span class="Identifier">`==`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Keyword">ref</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqRef&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Checks that two <tt class="docutils literal"><span class="pre">ref</span></tt> variables refer to the same item.
</dd>
<a id="==,ptr.T,ptr.T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cptr.T%2Cptr.T"><span class="Identifier">`==`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqRef&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Checks that two <tt class="docutils literal"><span class="pre">ptr</span></tt> variables refer to the same item.
</dd>
<a id="==,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2CT%2CT"><span class="Identifier">`==`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <span class="Keyword">proc</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqProc&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Checks that two <tt class="docutils literal"><span class="pre">proc</span></tt> variables refer to the same procedure.
</dd>
<a id="<=,Enum,Enum"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2CEnum%2CEnum"><span class="Identifier">`&lt;=`</span></a><span class="Other">[</span><span class="Identifier">Enum</span><span class="Other">:</span> <span class="Keyword">enum</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">Enum</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeEnum&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=,string,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cstring%2Cstring"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeStr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Compares two strings and returns true if <tt class="docutils literal"><span class="pre">x</span></tt> is lexicographically before <tt class="docutils literal"><span class="pre">y</span></tt> (uppercase letters come before lowercase letters).
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace">
</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">&quot;abc&quot;</span><span class="Whitespace">
</span><span class="Identifier">b</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">&quot;abd&quot;</span><span class="Whitespace">
</span><span class="Identifier">c</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">&quot;ZZZ&quot;</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;=</span><span class="Whitespace"> </span><span class="Identifier">b</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;=</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;=</span><span class="Whitespace"> </span><span class="Identifier">c</span><span class="Punctuation">)</span></pre>
</dd>
<a id="<=,char,char"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cchar%2Cchar"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeCh&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Compares two chars and returns true if <tt class="docutils literal"><span class="pre">x</span></tt> is lexicographically before <tt class="docutils literal"><span class="pre">y</span></tt> (uppercase letters come before lowercase letters).
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace">
</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="CharLit">&apos;a&apos;</span><span class="Whitespace">
</span><span class="Identifier">b</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="CharLit">&apos;b&apos;</span><span class="Whitespace">
</span><span class="Identifier">c</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="CharLit">&apos;Z&apos;</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;=</span><span class="Whitespace"> </span><span class="Identifier">b</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;=</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;=</span><span class="Whitespace"> </span><span class="Identifier">c</span><span class="Punctuation">)</span></pre>
</dd>
<a id="<=,set[T],set[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cset%5BT%5D%2Cset%5BT%5D"><span class="Identifier">`&lt;=`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeSet&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns true if <tt class="docutils literal"><span class="pre">x</span></tt> is a subset of <tt class="docutils literal"><span class="pre">y</span></tt>.</p>
<p>A subset <tt class="docutils literal"><span class="pre">x</span></tt> has all of its members in <tt class="docutils literal"><span class="pre">y</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt> doesn't necessarily have more members than <tt class="docutils literal"><span class="pre">x</span></tt>. That is, <tt class="docutils literal"><span class="pre">x</span></tt> can be equal to <tt class="docutils literal"><span class="pre">y</span></tt>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace">
</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">}</span><span class="Whitespace">
</span><span class="Identifier">b</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">7</span><span class="Punctuation">}</span><span class="Whitespace">
</span><span class="Identifier">c</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">2</span><span class="Punctuation">}</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;=</span><span class="Whitespace"> </span><span class="Identifier">b</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;=</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;=</span><span class="Whitespace"> </span><span class="Identifier">c</span><span class="Punctuation">)</span></pre>
</dd>
<a id="<=,bool,bool"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cbool%2Cbool"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeB&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=,ref.T,ref.T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cref.T%2Cref.T"><span class="Identifier">`&lt;=`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Keyword">ref</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LePtr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=,pointer,pointer"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cpointer%2Cpointer"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LePtr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,Enum,Enum"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2CEnum%2CEnum"><span class="Identifier">`&lt;`</span></a><span class="Other">[</span><span class="Identifier">Enum</span><span class="Other">:</span> <span class="Keyword">enum</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">Enum</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtEnum&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,string,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cstring%2Cstring"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtStr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Compares two strings and returns true if <tt class="docutils literal"><span class="pre">x</span></tt> is lexicographically before <tt class="docutils literal"><span class="pre">y</span></tt> (uppercase letters come before lowercase letters).
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace">
</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">&quot;abc&quot;</span><span class="Whitespace">
</span><span class="Identifier">b</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">&quot;abd&quot;</span><span class="Whitespace">
</span><span class="Identifier">c</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">&quot;ZZZ&quot;</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;</span><span class="Whitespace"> </span><span class="Identifier">b</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;</span><span class="Whitespace"> </span><span class="Identifier">c</span><span class="Punctuation">)</span></pre>
</dd>
<a id="<,char,char"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cchar%2Cchar"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtCh&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Compares two chars and returns true if <tt class="docutils literal"><span class="pre">x</span></tt> is lexicographically before <tt class="docutils literal"><span class="pre">y</span></tt> (uppercase letters come before lowercase letters).
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace">
</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="CharLit">&apos;a&apos;</span><span class="Whitespace">
</span><span class="Identifier">b</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="CharLit">&apos;b&apos;</span><span class="Whitespace">
</span><span class="Identifier">c</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="CharLit">&apos;Z&apos;</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;</span><span class="Whitespace"> </span><span class="Identifier">b</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;</span><span class="Whitespace"> </span><span class="Identifier">c</span><span class="Punctuation">)</span></pre>
</dd>
<a id="<,set[T],set[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cset%5BT%5D%2Cset%5BT%5D"><span class="Identifier">`&lt;`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtSet&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns true if <tt class="docutils literal"><span class="pre">x</span></tt> is a strict or proper subset of <tt class="docutils literal"><span class="pre">y</span></tt>.</p>
<p>A strict or proper subset <tt class="docutils literal"><span class="pre">x</span></tt> has all of its members in <tt class="docutils literal"><span class="pre">y</span></tt> but <tt class="docutils literal"><span class="pre">y</span></tt> has more elements than <tt class="docutils literal"><span class="pre">y</span></tt>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">let</span><span class="Whitespace">
</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">}</span><span class="Whitespace">
</span><span class="Identifier">b</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">7</span><span class="Punctuation">}</span><span class="Whitespace">
</span><span class="Identifier">c</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">2</span><span class="Punctuation">}</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;</span><span class="Whitespace"> </span><span class="Identifier">b</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Keyword">not</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">&lt;</span><span class="Whitespace"> </span><span class="Identifier">c</span><span class="Punctuation">)</span></pre>
</dd>
<a id="<,bool,bool"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cbool%2Cbool"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtB&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,ref.T,ref.T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cref.T%2Cref.T"><span class="Identifier">`&lt;`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Keyword">ref</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtPtr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,ptr.T,ptr.T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cptr.T%2Cptr.T"><span class="Identifier">`&lt;`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtPtr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,pointer,pointer"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cpointer%2Cpointer"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtPtr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="==,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cint%2Cint"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Compares two integers for equality.
</dd>
<a id="==,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cint8%2Cint8"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="==,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cint16%2Cint16"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="==,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cint32%2Cint32"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="==,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cint64%2Cint64"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cint%2Cint"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Returns true if <tt class="docutils literal"><span class="pre">x</span></tt> is less than or equal to <tt class="docutils literal"><span class="pre">y</span></tt>.
</dd>
<a id="<=,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cint8%2Cint8"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cint16%2Cint16"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cint32%2Cint32"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cint64%2Cint64"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cint%2Cint"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Returns true if <tt class="docutils literal"><span class="pre">x</span></tt> is less than <tt class="docutils literal"><span class="pre">y</span></tt>.
</dd>
<a id="<,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cint8%2Cint8"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cint16%2Cint16"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cint32%2Cint32"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cint64%2Cint64"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=,uint,uint"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cuint%2Cuint"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Returns true if <tt class="docutils literal"><span class="pre">x &lt;= y</span></tt>.
</dd>
<a id="<=,uint8,uint8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cuint8%2Cuint8"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=,uint16,uint16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cuint16%2Cuint16"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=,uint32,uint32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cuint32%2Cuint32"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=,uint64,uint64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cuint64%2Cuint64"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,uint,uint"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cuint%2Cuint"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Returns true if <tt class="docutils literal"><span class="pre">x &lt; y</span></tt>.
</dd>
<a id="<,uint8,uint8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cuint8%2Cuint8"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,uint16,uint16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cuint16%2Cuint16"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,uint32,uint32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cuint32%2Cuint32"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,uint64,uint64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cuint64%2Cuint64"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtU&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=%,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%25%2Cint%2Cint"><span class="Identifier">`&lt;=%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Treats <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt> as unsigned and compares them. Returns true if <tt class="docutils literal"><span class="pre">unsigned(x) &lt;= unsigned(y)</span></tt>.
</dd>
<a id="<=%,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%25%2Cint8%2Cint8"><span class="Identifier">`&lt;=%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=%,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%25%2Cint16%2Cint16"><span class="Identifier">`&lt;=%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=%,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%25%2Cint32%2Cint32"><span class="Identifier">`&lt;=%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=%,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%25%2Cint64%2Cint64"><span class="Identifier">`&lt;=%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<%,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%25%2Cint%2Cint"><span class="Identifier">`&lt;%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Treats <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt> as unsigned and compares them. Returns true if <tt class="docutils literal"><span class="pre">unsigned(x) &lt; unsigned(y)</span></tt>.
</dd>
<a id="<%,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%25%2Cint8%2Cint8"><span class="Identifier">`&lt;%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<%,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%25%2Cint16%2Cint16"><span class="Identifier">`&lt;%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<%,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%25%2Cint32%2Cint32"><span class="Identifier">`&lt;%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<%,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%25%2Cint64%2Cint64"><span class="Identifier">`&lt;%`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="==,uint,uint"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cuint%2Cuint"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint"><span class="Identifier">uint</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Compares two unsigned integers for equality.
</dd>
<a id="==,uint8,uint8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cuint8%2Cuint8"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint8"><span class="Identifier">uint8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="==,uint16,uint16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cuint16%2Cuint16"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint16"><span class="Identifier">uint16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="==,uint32,uint32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cuint32%2Cuint32"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint32"><span class="Identifier">uint32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="==,uint64,uint64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cuint64%2Cuint64"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#uint64"><span class="Identifier">uint64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="min,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#min%2Cint%2Cint"><span class="Identifier">min</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MinI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="min,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#min%2Cint8%2Cint8"><span class="Identifier">min</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MinI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="min,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#min%2Cint16%2Cint16"><span class="Identifier">min</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MinI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="min,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#min%2Cint32%2Cint32"><span class="Identifier">min</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MinI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="min,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#min%2Cint64%2Cint64"><span class="Identifier">min</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MinI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
The minimum value of two integers.
</dd>
<a id="max,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#max%2Cint%2Cint"><span class="Identifier">max</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MaxI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="max,int8,int8"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#max%2Cint8%2Cint8"><span class="Identifier">max</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MaxI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="max,int16,int16"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#max%2Cint16%2Cint16"><span class="Identifier">max</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MaxI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="max,int32,int32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#max%2Cint32%2Cint32"><span class="Identifier">max</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MaxI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="max,int64,int64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#max%2Cint64%2Cint64"><span class="Identifier">max</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MaxI&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
The maximum value of two integers.
</dd>
<a id="min,openArray[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#min%2CopenArray%5BT%5D"><span class="Identifier">min</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
The minimum value of <tt class="docutils literal"><span class="pre">x</span></tt>. <tt class="docutils literal"><span class="pre">T</span></tt> needs to have a <tt class="docutils literal"><span class="pre">&lt;</span></tt> operator.
</dd>
<a id="max,openArray[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#max%2CopenArray%5BT%5D"><span class="Identifier">max</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
The maximum value of <tt class="docutils literal"><span class="pre">x</span></tt>. <tt class="docutils literal"><span class="pre">T</span></tt> needs to have a <tt class="docutils literal"><span class="pre">&lt;</span></tt> operator.
</dd>
<a id="clamp,T,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#clamp%2CT%2CT%2CT"><span class="Identifier">clamp</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span></pre></dt>
<dd>
<p>Limits the value <tt class="docutils literal"><span class="pre">x</span></tt> within the interval [a, b]. This proc is equivalent to but fatser than <tt class="docutils literal"><span class="pre">max(a, min(b, x))</span></tt>.</p>
<p><strong>Note:</strong> <tt class="docutils literal"><span class="pre">a &lt;= b</span></tt> is assumed and will not be checked.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="FloatNumber">1.4</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">clamp</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="FloatNumber">1.0</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">(</span><span class="FloatNumber">0.5</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">clamp</span><span class="Punctuation">(</span><span class="FloatNumber">0.0</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="FloatNumber">1.0</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="FloatNumber">0.5</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="FloatNumber">4.</span><span class="Identifier">clamp</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Identifier">max</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="Identifier">min</span><span class="Punctuation">(</span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Punctuation">)</span><span class="Punctuation">)</span></pre>
</dd>
<a id="==,array[I,T],array[I,T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Carray%5BI%2CT%5D%2Carray%5BI%2CT%5D"><span class="Identifier">`==`</span></a><span class="Other">[</span><span class="Identifier">I</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#array"><span class="Identifier">array</span></a><span class="Other">[</span><span class="Identifier">I</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a></pre></dt>
<dd>
</dd>
<a id="==,openArray[T],openArray[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2CopenArray%5BT%5D%2CopenArray%5BT%5D"><span class="Identifier">`==`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a></pre></dt>
<dd>
</dd>
<a id="==,seq[T],seq[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cseq%5BT%5D%2Cseq%5BT%5D"><span class="Identifier">`==`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Generic equals operator for sequences: relies on a equals operator for the element type <tt class="docutils literal"><span class="pre">T</span></tt>.
</dd>
<a id="unsafeNew,ref.T,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#unsafeNew%2Cref.T%2CNatural"><span class="Identifier">unsafeNew</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Keyword">ref</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">size</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;New&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Creates a new object of type <tt class="docutils literal"><span class="pre">T</span></tt> and returns a safe (traced) reference to it in <tt class="docutils literal"><span class="pre">a</span></tt>.</p>
<p>This is <strong>unsafe</strong> as it allocates an object of the passed <tt class="docutils literal"><span class="pre">size</span></tt>. This should only be used for optimization purposes when you know what you're doing!</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#new,ref.T,proc(ref.T)">new</a></li>
</ul>
</dd>
<a id="sizeof,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#sizeof%2CT"><span class="Identifier">sizeof</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SizeOf&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the size of <tt class="docutils literal"><span class="pre">x</span></tt> in bytes.</p>
<p>Since this is a low-level proc, its usage is discouraged - using <a class="reference external" href="#new,ref.T,proc(ref.T)">new</a> for the most cases suffices that one never needs to know <tt class="docutils literal"><span class="pre">x</span></tt>'s size.</p>
<p>As a special semantic rule, <tt class="docutils literal"><span class="pre">x</span></tt> may also be a type identifier (<tt class="docutils literal"><span class="pre">sizeof(int)</span></tt> is valid).</p>
<p>Limitations: If used for types that are imported from C or C++, sizeof should fallback to the <tt class="docutils literal"><span class="pre">sizeof</span></tt> in the C compiler. The result isn't available for the Nim compiler and therefore can't be used inside of macros.</p>
<pre class="listing"><span class="Identifier">sizeof</span><span class="Punctuation">(</span><span class="CharLit">'A'</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 1</span>
<span class="Identifier">sizeof</span><span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 8</span></pre>
</dd>
<a id="alignof,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#alignof%2CT"><span class="Identifier">alignof</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AlignOf&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="alignof,typedesc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#alignof%2Ctypedesc"><span class="Identifier">alignof</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AlignOf&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="sizeof,typedesc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#sizeof%2Ctypedesc"><span class="Identifier">sizeof</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SizeOf&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="newSeq,seq[T],Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#newSeq%2Cseq%5BT%5D%2CNatural"><span class="Identifier">newSeq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">len</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;NewSeq&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Creates a new sequence of type <tt class="docutils literal"><span class="pre">seq[T]</span></tt> with length <tt class="docutils literal"><span class="pre">len</span></tt>.</p>
<p>This is equivalent to <tt class="docutils literal"><span class="pre">s = @[]; setlen(s, len)</span></tt>, but more efficient since no reallocation is needed.</p>
<p>Note that the sequence will be filled with zeroed entries. After the creation of the sequence you should assign entries to the sequence instead of adding them. Example:</p>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">inputStrings</span><span class="Punctuation">:</span> <span class="Identifier">seq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span>
<span class="Identifier">newSeq</span><span class="Punctuation">(</span><span class="Identifier">inputStrings</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span> <span class="Identifier">len</span><span class="Punctuation">(</span><span class="Identifier">inputStrings</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">3</span>
<span class="Identifier">inputStrings</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Punctuation">]</span> <span class="Operator">=</span> <span class="StringLit">&quot;The fourth&quot;</span>
<span class="Identifier">inputStrings</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">]</span> <span class="Operator">=</span> <span class="StringLit">&quot;assignment&quot;</span>
<span class="Identifier">inputStrings</span><span class="Punctuation">[</span><span class="DecNumber">2</span><span class="Punctuation">]</span> <span class="Operator">=</span> <span class="StringLit">&quot;would crash&quot;</span>
<span class="Comment">#inputStrings[3] = &quot;out of bounds&quot;</span></pre>
</dd>
<a id="newSeq"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#newSeq"><span class="Identifier">newSeq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">len</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">.</span><span class="Identifier">Natural</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span></pre></dt>
<dd>
<p>Creates a new sequence of type <tt class="docutils literal"><span class="pre">seq[T]</span></tt> with length <tt class="docutils literal"><span class="pre">len</span></tt>.</p>
<p>Note that the sequence will be filled with zeroed entries. After the creation of the sequence you should assign entries to the sequence instead of adding them.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#newSeqOfCap,Natural">newSeqOfCap</a></li>
<li><a class="reference external" href="#newSeqUninitialized,Natural">newSeqUninitialized</a></li>
</ul>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">inputStrings</span> <span class="Operator">=</span> <span class="Identifier">newSeq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="DecNumber">3</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span> <span class="Identifier">len</span><span class="Punctuation">(</span><span class="Identifier">inputStrings</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">3</span>
<span class="Identifier">inputStrings</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Punctuation">]</span> <span class="Operator">=</span> <span class="StringLit">&quot;The fourth&quot;</span>
<span class="Identifier">inputStrings</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">]</span> <span class="Operator">=</span> <span class="StringLit">&quot;assignment&quot;</span>
<span class="Identifier">inputStrings</span><span class="Punctuation">[</span><span class="DecNumber">2</span><span class="Punctuation">]</span> <span class="Operator">=</span> <span class="StringLit">&quot;would crash&quot;</span>
<span class="Comment">#inputStrings[3] = &quot;out of bounds&quot;</span></pre>
</dd>
<a id="newSeqOfCap,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#newSeqOfCap%2CNatural"><span class="Identifier">newSeqOfCap</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">cap</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;NewSeqOfCap&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Creates a new sequence of type <tt class="docutils literal"><span class="pre">seq[T]</span></tt> with length zero and capacity <tt class="docutils literal"><span class="pre">cap</span></tt>.<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">x</span> <span class="Operator">=</span> <span class="Identifier">newSeqOfCap</span><span class="Punctuation">[</span><span class="Identifier">int</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span> <span class="Identifier">len</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">0</span>
<span class="Identifier">x</span><span class="Operator">.</span><span class="Identifier">add</span><span class="Punctuation">(</span><span class="DecNumber">10</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span> <span class="Identifier">len</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span></pre>
</dd>
<a id="newSeqUninitialized,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#newSeqUninitialized%2CNatural"><span class="Identifier">newSeqUninitialized</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#SomeNumber"><span class="Identifier">SomeNumber</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">len</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span></pre></dt>
<dd>
<p>Creates a new sequence of type <tt class="docutils literal"><span class="pre">seq[T]</span></tt> with length <tt class="docutils literal"><span class="pre">len</span></tt>.</p>
<p>Only available for numbers types. Note that the sequence will be uninitialized. After the creation of the sequence you should assign entries to the sequence instead of adding them.</p>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">x</span> <span class="Operator">=</span> <span class="Identifier">newSeqUninitialized</span><span class="Punctuation">[</span><span class="Identifier">int</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="DecNumber">3</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span> <span class="Identifier">len</span><span class="Punctuation">(</span><span class="Identifier">x</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">3</span>
<span class="Identifier">x</span><span class="Punctuation">[</span><span class="DecNumber">0</span><span class="Punctuation">]</span> <span class="Operator">=</span> <span class="DecNumber">10</span></pre>
</dd>
<a id="len,TOpenArray"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#len%2CTOpenArray"><span class="Identifier">len</span></a><span class="Other">[</span><span class="Identifier">TOpenArray</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a> <span class="Operator">|</span> <a href="system.html#varargs"><span class="Identifier">varargs</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">TOpenArray</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
<span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LengthOpenArray&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Returns the length of an openArray.<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">s</span> <span class="Operator">=</span> <span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">]</span>
<span class="Identifier">echo</span> <span class="Identifier">len</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 5</span></pre>
</dd>
<a id="len,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#len%2Cstring"><span class="Identifier">len</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LengthStr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Returns the length of a string.<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">str</span> <span class="Operator">=</span> <span class="StringLit">&quot;Hello world!&quot;</span>
<span class="Identifier">echo</span> <span class="Identifier">len</span><span class="Punctuation">(</span><span class="Identifier">str</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 12</span></pre>
</dd>
<a id="len,cstring"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#len%2Ccstring"><span class="Identifier">len</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#cstring"><span class="Identifier">cstring</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LengthStr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the length of a compatible string. This is an O(n) operation except in js at runtime.</p>
<p><strong>Note:</strong> On the JS backend this currently counts UTF-16 code points instead of bytes at runtime (not at compile time). For now, if you need the byte length of the UTF-8 encoding, convert to string with <tt class="docutils literal"><span class="pre">$</span></tt> first then call <tt class="docutils literal"><span class="pre">len</span></tt>.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">len</span><span class="Punctuation">(</span><span class="RawData">cstring&quot;abc&quot;</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Whitespace">
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">len</span><span class="Punctuation">(</span><span class="Identifier">cstring</span><span class="Whitespace"> </span><span class="RawData">r&quot;ab\0c&quot;</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Whitespace"> </span><span class="Comment"># \0 is escaped</span><span class="Whitespace">
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">len</span><span class="Punctuation">(</span><span class="RawData">cstring&quot;ab\0c&quot;</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Whitespace"> </span><span class="Comment"># ditto</span><span class="Whitespace">
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">cstring</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">&quot;ab</span><span class="EscapeSequence">\0</span><span class="StringLit">c&quot;</span><span class="Whitespace">
</span><span class="Keyword">when</span><span class="Whitespace"> </span><span class="Identifier">defined</span><span class="Punctuation">(</span><span class="Identifier">js</span><span class="Punctuation">)</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">len</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Whitespace"> </span><span class="Comment"># len ignores \0 for js</span><span class="Whitespace">
</span><span class="Keyword">else</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">len</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Whitespace"> </span><span class="Comment"># \0 is a null terminator</span><span class="Whitespace">
</span><span class="Keyword">static</span><span class="Punctuation">:</span><span class="Whitespace">
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">a2</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">cstring</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="StringLit">&quot;ab</span><span class="EscapeSequence">\0</span><span class="StringLit">c&quot;</span><span class="Whitespace">
</span><span class="Identifier">doAssert</span><span class="Whitespace"> </span><span class="Identifier">a2</span><span class="Operator">.</span><span class="Identifier">len</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Whitespace"> </span><span class="Comment"># \0 is a null terminator, even in js vm</span></pre>
</dd>
<a id="len"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#len"><span class="Identifier">len</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Other">(</span><span class="Keyword">type</span> <span class="Identifier">array</span><span class="Other">)</span> <span class="Operator">|</span> <a href="system.html#array"><span class="Identifier">array</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LengthArray&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Returns the length of an array or an array type. This is roughly the same as <tt class="docutils literal"><span class="pre">high(T)-low(T)+1</span></tt>.<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">arr</span> <span class="Operator">=</span> <span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">]</span>
<span class="Identifier">echo</span> <span class="Identifier">len</span><span class="Punctuation">(</span><span class="Identifier">arr</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 5</span>
<span class="Identifier">echo</span> <span class="Identifier">len</span><span class="Punctuation">(</span><span class="Identifier">array</span><span class="Punctuation">[</span><span class="FloatNumber">3.</span><span class="Operator">.</span><span class="DecNumber">8</span><span class="Punctuation">,</span> <span class="Identifier">int</span><span class="Punctuation">]</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 6</span></pre>
</dd>
<a id="len,seq[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#len%2Cseq%5BT%5D"><span class="Identifier">len</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LengthSeq&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Returns the length of a sequence.<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">s</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">1</span><span class="Punctuation">]</span>
<span class="Identifier">echo</span> <span class="Identifier">len</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 5</span></pre>
</dd>
<a id="ord,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#ord%2CT"><span class="Identifier">ord</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a> <span class="Operator">|</span> <span class="Keyword">enum</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Ord&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Returns the internal <tt class="docutils literal"><span class="pre">int</span></tt> value of an ordinal value <tt class="docutils literal"><span class="pre">x</span></tt>.<pre class="listing"><span class="Identifier">echo</span> <span class="Identifier">ord</span><span class="Punctuation">(</span><span class="CharLit">'A'</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 65</span>
<span class="Identifier">echo</span> <span class="Identifier">ord</span><span class="Punctuation">(</span><span class="CharLit">'a'</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 97</span></pre>
</dd>
<a id="chr,range[]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#chr%2Crange%5B%5D"><span class="Identifier">chr</span></a><span class="Other">(</span><span class="Identifier">u</span><span class="Other">:</span> <a href="system.html#range"><span class="Identifier">range</span></a><span class="Other">[</span><span class="DecNumber">0</span> <span class="Operator">..</span> <span class="DecNumber">255</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#char"><span class="Identifier">char</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Chr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Converts an <tt class="docutils literal"><span class="pre">int</span></tt> in the range <tt class="docutils literal"><span class="pre">0..255</span></tt> to a character.<pre class="listing"><span class="Identifier">echo</span> <span class="Identifier">chr</span><span class="Punctuation">(</span><span class="DecNumber">65</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; A</span>
<span class="Identifier">echo</span> <span class="Identifier">chr</span><span class="Punctuation">(</span><span class="DecNumber">97</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; a</span></pre>
</dd>
<a id="+,float32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cfloat32"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryPlusF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,float32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cfloat32"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryMinusF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,float32,float32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cfloat32%2Cfloat32"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AddF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,float32,float32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cfloat32%2Cfloat32"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SubF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*,float32,float32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%2Cfloat32%2Cfloat32"><span class="Identifier">`*`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MulF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="/,float32,float32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2F%2Cfloat32%2Cfloat32"><span class="Identifier">`/`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DivF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,float"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cfloat"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryPlusF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,float"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cfloat"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;UnaryMinusF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="+,float,float"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2B%2Cfloat%2Cfloat"><span class="Identifier">`+`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AddF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="-,float,float"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2Cfloat%2Cfloat"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SubF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="*,float,float"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2A%2Cfloat%2Cfloat"><span class="Identifier">`*`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MulF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="/,float,float"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%2F%2Cfloat%2Cfloat"><span class="Identifier">`/`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;DivF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="==,float32,float32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cfloat32%2Cfloat32"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=,float32,float32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cfloat32%2Cfloat32"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,float32,float32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cfloat32%2Cfloat32"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="==,float,float"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2Cfloat%2Cfloat"><span class="Identifier">`==`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;EqF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<=,float,float"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2Cfloat%2Cfloat"><span class="Identifier">`&lt;=`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LeF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="<,float,float"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2Cfloat%2Cfloat"><span class="Identifier">`&lt;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;LtF64&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="incl,set[T],T"></a>
<dt><pre><span class="Keyword">func</span> <a href="#incl%2Cset%5BT%5D%2CT"><span class="Identifier">incl</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Incl&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Includes element <tt class="docutils literal"><span class="pre">y</span></tt> in the set <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>This is the same as <tt class="docutils literal"><span class="pre">x = x + {y}</span></tt>, but it might be more efficient.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">}</span><span class="Whitespace">
</span><span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">incl</span><span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">}</span><span class="Whitespace">
</span><span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">incl</span><span class="Punctuation">(</span><span class="DecNumber">4</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">}</span></pre>
</dd>
<a id="excl,set[T],T"></a>
<dt><pre><span class="Keyword">func</span> <a href="#excl%2Cset%5BT%5D%2CT"><span class="Identifier">excl</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Excl&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Excludes element <tt class="docutils literal"><span class="pre">y</span></tt> from the set <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>This is the same as <tt class="docutils literal"><span class="pre">x = x - {y}</span></tt>, but it might be more efficient.</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">b</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">6</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">12</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">545</span><span class="Punctuation">}</span><span class="Whitespace">
</span><span class="Identifier">b</span><span class="Operator">.</span><span class="Identifier">excl</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">b</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">6</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">12</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">545</span><span class="Punctuation">}</span></pre>
</dd>
<a id="card,set[T]"></a>
<dt><pre><span class="Keyword">func</span> <a href="#card%2Cset%5BT%5D"><span class="Identifier">card</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Card&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Returns the cardinality of the set <tt class="docutils literal"><span class="pre">x</span></tt>, i.e. the number of elements in the set.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">7</span><span class="Punctuation">}</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">card</span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Whitespace">
</span><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">b</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">7</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">}</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">card</span><span class="Punctuation">(</span><span class="Identifier">b</span><span class="Punctuation">)</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Whitespace"> </span><span class="Comment"># repeated 5 doesn&apos;t count</span></pre>
</dd>
<a id="len,set[T]"></a>
<dt><pre><span class="Keyword">func</span> <a href="#len%2Cset%5BT%5D"><span class="Identifier">len</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Card&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
An alias for <tt class="docutils literal"><span class="pre">card(x)</span></tt>.
</dd>
<a id="*,set[T],set[T]"></a>
<dt><pre><span class="Keyword">func</span> <a href="#%2A%2Cset%5BT%5D%2Cset%5BT%5D"><span class="Identifier">`*`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MulSet&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
This operator computes the intersection of two sets.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">}</span><span class="Whitespace"> </span><span class="Operator">*</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Punctuation">}</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">}</span></pre>
</dd>
<a id="+,set[T],set[T]"></a>
<dt><pre><span class="Keyword">func</span> <a href="#%2B%2Cset%5BT%5D%2Cset%5BT%5D"><span class="Identifier">`+`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;PlusSet&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
This operator computes the union of two sets.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">}</span><span class="Whitespace"> </span><span class="Operator">+</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Punctuation">}</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Punctuation">}</span></pre>
</dd>
<a id="-,set[T],set[T]"></a>
<dt><pre><span class="Keyword">func</span> <a href="#-%2Cset%5BT%5D%2Cset%5BT%5D"><span class="Identifier">`-`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;MinusSet&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
This operator computes the difference of two sets.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">}</span><span class="Whitespace"> </span><span class="Operator">-</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">2</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">4</span><span class="Punctuation">}</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="DecNumber">1</span><span class="Punctuation">}</span></pre>
</dd>
<a id="contains,set[T],T"></a>
<dt><pre><span class="Keyword">func</span> <a href="#contains%2Cset%5BT%5D%2CT"><span class="Identifier">contains</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#set"><span class="Identifier">set</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;InSet&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>One should overload this proc if one wants to overload the <tt class="docutils literal"><span class="pre">in</span></tt> operator.</p>
<p>The parameters are in reverse order! <tt class="docutils literal"><span class="pre">a in b</span></tt> is a template for <tt class="docutils literal"><span class="pre">contains(b, a)</span></tt>. This is because the unification algorithm that Nim uses for overload resolution works from left to right. But for the <tt class="docutils literal"><span class="pre">in</span></tt> operator that would be the wrong direction for this piece of code:</p>
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">s</span><span class="Punctuation">:</span><span class="Whitespace"> </span><span class="Identifier">set</span><span class="Punctuation">[</span><span class="Identifier">range</span><span class="Punctuation">[</span><span class="CharLit">&apos;a&apos;</span><span class="Operator">..</span><span class="CharLit">&apos;z&apos;</span><span class="Punctuation">]</span><span class="Punctuation">]</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Punctuation">{</span><span class="CharLit">&apos;a&apos;</span><span class="Operator">..</span><span class="CharLit">&apos;c&apos;</span><span class="Punctuation">}</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">s</span><span class="Operator">.</span><span class="Identifier">contains</span><span class="Punctuation">(</span><span class="CharLit">&apos;c&apos;</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="CharLit">&apos;b&apos;</span><span class="Whitespace"> </span><span class="Keyword">in</span><span class="Whitespace"> </span><span class="Identifier">s</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="CharLit">&apos;d&apos;</span><span class="Whitespace"> </span><span class="Keyword">notin</span><span class="Whitespace"> </span><span class="Identifier">s</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">set</span><span class="Punctuation">[</span><span class="CharLit">&apos;a&apos;</span><span class="Operator">..</span><span class="CharLit">&apos;z&apos;</span><span class="Punctuation">]</span><span class="Whitespace"> </span><span class="Keyword">is</span><span class="Whitespace"> </span><span class="Identifier">set</span><span class="Punctuation">[</span><span class="Identifier">range</span><span class="Punctuation">[</span><span class="CharLit">&apos;a&apos;</span><span class="Operator">..</span><span class="CharLit">&apos;z&apos;</span><span class="Punctuation">]</span><span class="Punctuation">]</span></pre>If <tt class="docutils literal"><span class="pre">in</span></tt> had been declared as <tt class="docutils literal"><span class="pre">[T](elem: T, s: set[T])</span></tt> then <tt class="docutils literal"><span class="pre">T</span></tt> would have been bound to <tt class="docutils literal"><span class="pre">char</span></tt>. But <tt class="docutils literal"><span class="pre">s</span></tt> is not compatible to type <tt class="docutils literal"><span class="pre">set[char]</span></tt>! The solution is to bind <tt class="docutils literal"><span class="pre">T</span></tt> to <tt class="docutils literal"><span class="pre">range['a'..'z']</span></tt>. This is achieved by reversing the parameters for <tt class="docutils literal"><span class="pre">contains</span></tt>; <tt class="docutils literal"><span class="pre">in</span></tt> then passes its arguments in reverse order.
</dd>
<a id="contains,HSlice[U,V],W"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#contains%2CHSlice%5BU%2CV%5D%2CW"><span class="Identifier">contains</span></a><span class="Other">[</span><span class="Identifier">U</span><span class="Other">,</span> <span class="Identifier">V</span><span class="Other">,</span> <span class="Identifier">W</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#HSlice"><span class="Identifier">HSlice</span></a><span class="Other">[</span><span class="Identifier">U</span><span class="Other">,</span> <span class="Identifier">V</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">value</span><span class="Other">:</span> <span class="Identifier">W</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Checks if <tt class="docutils literal"><span class="pre">value</span></tt> is within the range of <tt class="docutils literal"><span class="pre">s</span></tt>; returns true if <tt class="docutils literal"><span class="pre">value &gt;= s.a and value &lt;= s.b</span></tt><pre class="listing"><span class="Identifier">assert</span><span class="Punctuation">(</span><span class="Punctuation">(</span><span class="FloatNumber">1.</span><span class="Operator">.</span><span class="DecNumber">3</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">contains</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Identifier">true</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span><span class="Punctuation">(</span><span class="Punctuation">(</span><span class="FloatNumber">1.</span><span class="Operator">.</span><span class="DecNumber">3</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">contains</span><span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Identifier">true</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span><span class="Punctuation">(</span><span class="Punctuation">(</span><span class="FloatNumber">1.</span><span class="Operator">.</span><span class="DecNumber">3</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">contains</span><span class="Punctuation">(</span><span class="DecNumber">4</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Identifier">false</span><span class="Punctuation">)</span></pre>
</dd>
<a id="is,T,S"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#is%2CT%2CS"><span class="Identifier">`is`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">S</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">S</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Is&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Checks if <tt class="docutils literal"><span class="pre">T</span></tt> is of the same type as <tt class="docutils literal"><span class="pre">S</span></tt>.</p>
<p>For a negated version, use <a class="reference external" href="#isnot.t,untyped,untyped">isnot</a>.</p>
<pre class="listing"><span class="Identifier">assert</span> <span class="DecNumber">42</span> <span class="Keyword">is</span> <span class="Identifier">int</span>
<span class="Identifier">assert</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">]</span> <span class="Keyword">is</span> <span class="Identifier">seq</span>
<span class="Keyword">proc</span> <span class="Identifier">test</span><span class="Punctuation">[</span><span class="Identifier">T</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Punctuation">:</span> <span class="Identifier">T</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Identifier">int</span> <span class="Operator">=</span>
<span class="Keyword">when</span> <span class="Punctuation">(</span><span class="Identifier">T</span> <span class="Keyword">is</span> <span class="Identifier">int</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
<span class="Keyword">return</span> <span class="Identifier">a</span>
<span class="Keyword">else</span><span class="Punctuation">:</span>
<span class="Keyword">return</span> <span class="DecNumber">0</span>
<span class="Identifier">assert</span><span class="Punctuation">(</span><span class="Identifier">test</span><span class="Punctuation">[</span><span class="Identifier">int</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">3</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span><span class="Punctuation">(</span><span class="Identifier">test</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span><span class="Punctuation">(</span><span class="StringLit">&quot;xyz&quot;</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">0</span><span class="Punctuation">)</span></pre>
</dd>
<a id="new,ref.T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#new%2Cref.T"><span class="Identifier">new</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Keyword">ref</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;New&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Creates a new object of type <tt class="docutils literal"><span class="pre">T</span></tt> and returns a safe (traced) reference to it in <tt class="docutils literal"><span class="pre">a</span></tt>.
</dd>
<a id="new,typedesc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#new%2Ctypedesc"><span class="Identifier">new</span></a><span class="Other">(</span><span class="Identifier">t</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#auto"><span class="Identifier">auto</span></a></pre></dt>
<dd>
<p>Creates a new object of type <tt class="docutils literal"><span class="pre">T</span></tt> and returns a safe (traced) reference to it as result value.</p>
<p>When <tt class="docutils literal"><span class="pre">T</span></tt> is a ref type then the resulting type will be <tt class="docutils literal"><span class="pre">T</span></tt>, otherwise it will be <tt class="docutils literal"><span class="pre">ref T</span></tt>.</p>
</dd>
<a id="of,typedesc[T],typedesc[S]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#of%2Ctypedesc%5BT%5D%2Ctypedesc%5BS%5D"><span class="Identifier">`of`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">S</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">[</span><span class="Identifier">S</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Of&quot;</span><span class="Other">,</span>
<span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="of,T,typedesc[S]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#of%2CT%2Ctypedesc%5BS%5D"><span class="Identifier">`of`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">S</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">[</span><span class="Identifier">S</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Of&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="of,T,S"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#of%2CT%2CS"><span class="Identifier">`of`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">S</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">S</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Of&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Checks if <tt class="docutils literal"><span class="pre">x</span></tt> has a type of <tt class="docutils literal"><span class="pre">y</span></tt>.<pre class="listing"><span class="Identifier">assert</span><span class="Punctuation">(</span><span class="Identifier">FloatingPointDefect</span> <span class="Keyword">of</span> <span class="Identifier">Exception</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span><span class="Punctuation">(</span><span class="Identifier">DivByZeroDefect</span> <span class="Keyword">of</span> <span class="Identifier">Exception</span><span class="Punctuation">)</span></pre>
</dd>
<a id="cmp,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#cmp%2CT%2CT"><span class="Identifier">cmp</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a></pre></dt>
<dd>
<p>Generic compare proc.</p>
<p>Returns:</p>
<ul class="simple"><li>a value less than zero, if <tt class="docutils literal"><span class="pre">x &lt; y</span></tt></li>
<li>a value greater than zero, if <tt class="docutils literal"><span class="pre">x &gt; y</span></tt></li>
<li>zero, if <tt class="docutils literal"><span class="pre">x == y</span></tt></li>
</ul>
<p>This is useful for writing generic algorithms without performance loss. This generic implementation uses the <tt class="docutils literal"><span class="pre">==</span></tt> and <tt class="docutils literal"><span class="pre">&lt;</span></tt> operators.</p>
<pre class="listing"><span class="Keyword">import</span> <span class="Identifier">algorithm</span>
<span class="Identifier">echo</span> <span class="Identifier">sorted</span><span class="Punctuation">(</span><span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">,</span> <span class="DecNumber">8</span><span class="Punctuation">,</span> <span class="DecNumber">7</span><span class="Punctuation">]</span><span class="Punctuation">,</span> <span class="Identifier">cmp</span><span class="Punctuation">[</span><span class="Identifier">int</span><span class="Punctuation">]</span><span class="Punctuation">)</span></pre>
</dd>
<a id="@,sinkarray[IDX,T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%40%2Csinkarray%5BIDX%2CT%5D"><span class="Identifier">`@`</span></a><span class="Other">[</span><span class="Identifier">IDX</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <a href="system.html#sink"><span class="Identifier">sink</span></a> <a href="system.html#array"><span class="Identifier">array</span></a><span class="Other">[</span><span class="Identifier">IDX</span><span class="Other">,</span> <span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ArrToSeq&quot;</span><span class="Other">,</span>
<span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Turns an array into a sequence.</p>
<p>This most often useful for constructing sequences with the array constructor: <tt class="docutils literal"><span class="pre">@[1, 2, 3]</span></tt> has the type <tt class="docutils literal"><span class="pre">seq[int]</span></tt>, while <tt class="docutils literal"><span class="pre">[1, 2, 3]</span></tt> has the type <tt class="docutils literal"><span class="pre">array[0..2, int]</span></tt>.</p>
<pre class="listing"><span class="Keyword">let</span>
<span class="Identifier">a</span> <span class="Operator">=</span> <span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">]</span>
<span class="Identifier">b</span> <span class="Operator">=</span> <span class="StringLit">&quot;foo&quot;</span>
<span class="Identifier">echo</span> <span class="Operator">@</span><span class="Identifier">a</span> <span class="Comment"># =&gt; @[1, 3, 5]</span>
<span class="Identifier">echo</span> <span class="Operator">@</span><span class="Identifier">b</span> <span class="Comment"># =&gt; @['f', 'o', 'o']</span></pre>
</dd>
<a id="default,typedesc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#default%2Ctypedesc"><span class="Identifier">default</span></a><span class="Other">(</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T:type</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Default&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
returns the default value of the type <tt class="docutils literal"><span class="pre">T</span></tt>.
</dd>
<a id="reset,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#reset%2CT"><span class="Identifier">reset</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">obj</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Resets an object <tt class="docutils literal"><span class="pre">obj</span></tt> to its default value.
</dd>
<a id="setLen,seq[T],Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#setLen%2Cseq%5BT%5D%2CNatural"><span class="Identifier">setLen</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">newlen</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SetLengthSeq&quot;</span><span class="Other">,</span>
<span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Sets the length of seq <tt class="docutils literal"><span class="pre">s</span></tt> to <tt class="docutils literal"><span class="pre">newlen</span></tt>. <tt class="docutils literal"><span class="pre">T</span></tt> may be any sequence type.</p>
<p>If the current length is greater than the new length, <tt class="docutils literal"><span class="pre">s</span></tt> will be truncated.</p>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">x</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">10</span><span class="Punctuation">,</span> <span class="DecNumber">20</span><span class="Punctuation">]</span>
<span class="Identifier">x</span><span class="Operator">.</span><span class="Identifier">setLen</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">)</span>
<span class="Identifier">x</span><span class="Punctuation">[</span><span class="DecNumber">4</span><span class="Punctuation">]</span> <span class="Operator">=</span> <span class="DecNumber">50</span>
<span class="Identifier">assert</span> <span class="Identifier">x</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">10</span><span class="Punctuation">,</span> <span class="DecNumber">20</span><span class="Punctuation">,</span> <span class="DecNumber">0</span><span class="Punctuation">,</span> <span class="DecNumber">0</span><span class="Punctuation">,</span> <span class="DecNumber">50</span><span class="Punctuation">]</span>
<span class="Identifier">x</span><span class="Operator">.</span><span class="Identifier">setLen</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span> <span class="Identifier">x</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">10</span><span class="Punctuation">]</span></pre>
</dd>
<a id="setLen,string,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#setLen%2Cstring%2CNatural"><span class="Identifier">setLen</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">newlen</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;SetLengthStr&quot;</span><span class="Other">,</span>
<span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Sets the length of string <tt class="docutils literal"><span class="pre">s</span></tt> to <tt class="docutils literal"><span class="pre">newlen</span></tt>.</p>
<p>If the current length is greater than the new length, <tt class="docutils literal"><span class="pre">s</span></tt> will be truncated.</p>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">myS</span> <span class="Operator">=</span> <span class="StringLit">&quot;Nim is great!!&quot;</span>
<span class="Identifier">myS</span><span class="Operator">.</span><span class="Identifier">setLen</span><span class="Punctuation">(</span><span class="DecNumber">3</span><span class="Punctuation">)</span> <span class="Comment"># myS &lt;- &quot;Nim&quot;</span>
<span class="Identifier">echo</span> <span class="Identifier">myS</span><span class="Punctuation">,</span> <span class="StringLit">&quot; is fantastic!!&quot;</span></pre>
</dd>
<a id="newString,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#newString%2CNatural"><span class="Identifier">newString</span></a><span class="Other">(</span><span class="Identifier">len</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;NewString&quot;</span><span class="Other">,</span>
<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;mnewString&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns a new string of length <tt class="docutils literal"><span class="pre">len</span></tt> but with uninitialized content. One needs to fill the string character after character with the index operator <tt class="docutils literal"><span class="pre">s[i]</span></tt>.</p>
<p>This procedure exists only for optimization purposes; the same effect can be achieved with the <tt class="docutils literal"><span class="pre">&amp;</span></tt> operator or with <tt class="docutils literal"><span class="pre">add</span></tt>.</p>
</dd>
<a id="newStringOfCap,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#newStringOfCap%2CNatural"><span class="Identifier">newStringOfCap</span></a><span class="Other">(</span><span class="Identifier">cap</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;NewStringOfCap&quot;</span><span class="Other">,</span>
<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;rawNewString&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns a new string of length <tt class="docutils literal"><span class="pre">0</span></tt> but with capacity <tt class="docutils literal"><span class="pre">cap</span></tt>.</p>
<p>This procedure exists only for optimization purposes; the same effect can be achieved with the <tt class="docutils literal"><span class="pre">&amp;</span></tt> operator or with <tt class="docutils literal"><span class="pre">add</span></tt>.</p>
</dd>
<a id="&,string,char"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%26%2Cstring%2Cchar"><span class="Identifier">`&amp;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ConStrStr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">merge</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Concatenates <tt class="docutils literal"><span class="pre">x</span></tt> with <tt class="docutils literal"><span class="pre">y</span></tt>.<pre class="listing"><span class="Identifier">assert</span><span class="Punctuation">(</span><span class="StringLit">&quot;ab&quot;</span> <span class="Operator">&amp;</span> <span class="CharLit">'c'</span> <span class="Operator">==</span> <span class="StringLit">&quot;abc&quot;</span><span class="Punctuation">)</span></pre>
</dd>
<a id="&,char,char"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%26%2Cchar%2Cchar"><span class="Identifier">`&amp;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ConStrStr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">merge</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Concatenates characters <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt> into a string.<pre class="listing"><span class="Identifier">assert</span><span class="Punctuation">(</span><span class="CharLit">'a'</span> <span class="Operator">&amp;</span> <span class="CharLit">'b'</span> <span class="Operator">==</span> <span class="StringLit">&quot;ab&quot;</span><span class="Punctuation">)</span></pre>
</dd>
<a id="&,string,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%26%2Cstring%2Cstring"><span class="Identifier">`&amp;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ConStrStr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">merge</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Concatenates strings <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>.<pre class="listing"><span class="Identifier">assert</span><span class="Punctuation">(</span><span class="StringLit">&quot;ab&quot;</span> <span class="Operator">&amp;</span> <span class="StringLit">&quot;cd&quot;</span> <span class="Operator">==</span> <span class="StringLit">&quot;abcd&quot;</span><span class="Punctuation">)</span></pre>
</dd>
<a id="&,char,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%26%2Cchar%2Cstring"><span class="Identifier">`&amp;`</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;ConStrStr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">merge</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Concatenates <tt class="docutils literal"><span class="pre">x</span></tt> with <tt class="docutils literal"><span class="pre">y</span></tt>.<pre class="listing"><span class="Identifier">assert</span><span class="Punctuation">(</span><span class="CharLit">'a'</span> <span class="Operator">&amp;</span> <span class="StringLit">&quot;bc&quot;</span> <span class="Operator">==</span> <span class="StringLit">&quot;abc&quot;</span><span class="Punctuation">)</span></pre>
</dd>
<a id="add,string,char"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#add%2Cstring%2Cchar"><span class="Identifier">add</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#char"><span class="Identifier">char</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AppendStrCh&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Appends <tt class="docutils literal"><span class="pre">y</span></tt> to <tt class="docutils literal"><span class="pre">x</span></tt> in place.<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">tmp</span> <span class="Operator">=</span> <span class="StringLit">&quot;&quot;</span>
<span class="Identifier">tmp</span><span class="Operator">.</span><span class="Identifier">add</span><span class="Punctuation">(</span><span class="CharLit">'a'</span><span class="Punctuation">)</span>
<span class="Identifier">tmp</span><span class="Operator">.</span><span class="Identifier">add</span><span class="Punctuation">(</span><span class="CharLit">'b'</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span><span class="Punctuation">(</span><span class="Identifier">tmp</span> <span class="Operator">==</span> <span class="StringLit">&quot;ab&quot;</span><span class="Punctuation">)</span></pre>
</dd>
<a id="add,string,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#add%2Cstring%2Cstring"><span class="Identifier">add</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AppendStrStr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Concatenates <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt> in place.<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">tmp</span> <span class="Operator">=</span> <span class="StringLit">&quot;&quot;</span>
<span class="Identifier">tmp</span><span class="Operator">.</span><span class="Identifier">add</span><span class="Punctuation">(</span><span class="StringLit">&quot;ab&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">tmp</span><span class="Operator">.</span><span class="Identifier">add</span><span class="Punctuation">(</span><span class="StringLit">&quot;cd&quot;</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span><span class="Punctuation">(</span><span class="Identifier">tmp</span> <span class="Operator">==</span> <span class="StringLit">&quot;abcd&quot;</span><span class="Punctuation">)</span></pre>
</dd>
<a id="quit,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#quit%2Cint"><span class="Identifier">quit</span></a><span class="Other">(</span><span class="Identifier">errorcode</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="Identifier">QuitSuccess</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Exit&quot;</span><span class="Other">,</span> <span class="Identifier">noreturn</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Stops the program immediately with an exit code.</p>
<p>Before stopping the program the &quot;exit procedures&quot; are called in the opposite order they were added with <a class="reference external" href="exitprocs.html#addExitProc,proc)">addExitProc</a>. <tt class="docutils literal"><span class="pre">quit</span></tt> never returns and ignores any exception that may have been raised by the quit procedures. It does <em>not</em> call the garbage collector to free all the memory, unless a quit procedure calls <a class="reference external" href="#GC_fullCollect">GC_fullCollect</a>.</p>
<p>The proc <tt class="docutils literal"><span class="pre">quit(QuitSuccess)</span></tt> is called implicitly when your nim program finishes without incident for platforms where this is the expected behavior. A raised unhandled exception is equivalent to calling <tt class="docutils literal"><span class="pre">quit(QuitFailure)</span></tt>.</p>
<p>Note that this is a <em>runtime</em> call and using <tt class="docutils literal"><span class="pre">quit</span></tt> inside a macro won't have any compile time effect. If you need to stop the compiler inside a macro, use the <a class="reference external" href="manual.html#pragmas-error-pragma">error</a> or <a class="reference external" href="manual.html#pragmas-fatal-pragma">fatal</a> pragmas.</p>
</dd>
<a id="add,seq[T],sinkT"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#add%2Cseq%5BT%5D%2CsinkT"><span class="Identifier">add</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#sink"><span class="Identifier">sink</span></a> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AppendSeqElem&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Generic proc for adding a data item <tt class="docutils literal"><span class="pre">y</span></tt> to a container <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>For containers that have an order, <tt class="docutils literal"><span class="pre">add</span></tt> means <em>append</em>. New generic containers should also call their adding proc <tt class="docutils literal"><span class="pre">add</span></tt> for consistency. Generic code becomes much easier to write if the Nim naming scheme is respected.</p>
</dd>
<a id="add,seq[T],openArray[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#add%2Cseq%5BT%5D%2CopenArray%5BT%5D"><span class="Identifier">add</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Generic proc for adding a container <tt class="docutils literal"><span class="pre">y</span></tt> to a container <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>For containers that have an order, <tt class="docutils literal"><span class="pre">add</span></tt> means <em>append</em>. New generic containers should also call their adding proc <tt class="docutils literal"><span class="pre">add</span></tt> for consistency. Generic code becomes much easier to write if the Nim naming scheme is respected.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#&amp;,seq[T],seq[T]">&amp; proc</a></li>
</ul>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">s</span><span class="Punctuation">:</span> <span class="Identifier">seq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;test2&quot;</span><span class="Punctuation">,</span><span class="StringLit">&quot;test2&quot;</span><span class="Punctuation">]</span>
<span class="Identifier">s</span><span class="Operator">.</span><span class="Identifier">add</span><span class="Punctuation">(</span><span class="StringLit">&quot;test&quot;</span><span class="Punctuation">)</span> <span class="Comment"># s &lt;- @[test2, test2, test]</span></pre>
</dd>
<a id="del,seq[T],Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#del%2Cseq%5BT%5D%2CNatural"><span class="Identifier">del</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Deletes the item at index <tt class="docutils literal"><span class="pre">i</span></tt> by putting <tt class="docutils literal"><span class="pre">x[high(x)]</span></tt> into position <tt class="docutils literal"><span class="pre">i</span></tt>.</p>
<p>This is an <tt class="docutils literal"><span class="pre">O(1)</span></tt> operation.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#delete,seq[T],Natural">delete</a> for preserving the order</li>
</ul>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">i</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">]</span>
<span class="Identifier">i</span><span class="Operator">.</span><span class="Identifier">del</span><span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; @[1, 2, 5, 4]</span></pre>
</dd>
<a id="delete,seq[T],Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#delete%2Cseq%5BT%5D%2CNatural"><span class="Identifier">delete</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">i</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Deletes the item at index <tt class="docutils literal"><span class="pre">i</span></tt> by moving all <tt class="docutils literal"><span class="pre">x[i+1..]</span></tt> items by one position.</p>
<p>This is an <tt class="docutils literal"><span class="pre">O(n)</span></tt> operation.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#delete,seq[T],Natural">del</a> for O(1) operation</li>
</ul>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">i</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">]</span>
<span class="Identifier">i</span><span class="Operator">.</span><span class="Identifier">delete</span><span class="Punctuation">(</span><span class="DecNumber">2</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; @[1, 2, 4, 5]</span></pre>
</dd>
<a id="insert,seq[T],sinkT"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#insert%2Cseq%5BT%5D%2CsinkT"><span class="Identifier">insert</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">item</span><span class="Other">:</span> <a href="system.html#sink"><span class="Identifier">sink</span></a> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">i</span> <span class="Other">=</span> <span class="DecNumber">0</span><span class="Other">.</span><span class="Identifier">Natural</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Inserts <tt class="docutils literal"><span class="pre">item</span></tt> into <tt class="docutils literal"><span class="pre">x</span></tt> at position <tt class="docutils literal"><span class="pre">i</span></tt>.<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">i</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">]</span>
<span class="Identifier">i</span><span class="Operator">.</span><span class="Identifier">insert</span><span class="Punctuation">(</span><span class="DecNumber">99</span><span class="Punctuation">,</span> <span class="DecNumber">0</span><span class="Punctuation">)</span> <span class="Comment"># i &lt;- @[99, 1, 3, 5]</span></pre>
</dd>
<a id="repr,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#repr%2CT"><span class="Identifier">repr</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Repr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Takes any Nim variable and returns its string representation. No trailing newline is inserted (so <tt class="docutils literal"><span class="pre">echo</span></tt> won't add an empty newline). Use <tt class="docutils literal"><span class="pre">-d:nimLegacyReprWithNewline</span></tt> to revert to old behavior where newlines were added in some cases.</p>
<p>It works even for complex data graphs with cycles. This is a great debugging tool.</p>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">s</span><span class="Punctuation">:</span> <span class="Identifier">seq</span><span class="Punctuation">[</span><span class="Identifier">string</span><span class="Punctuation">]</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="StringLit">&quot;test2&quot;</span><span class="Punctuation">,</span> <span class="StringLit">&quot;test2&quot;</span><span class="Punctuation">]</span>
<span class="Keyword">var</span> <span class="Identifier">i</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">]</span>
<span class="Identifier">echo</span> <span class="Identifier">repr</span><span class="Punctuation">(</span><span class="Identifier">s</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 0x1055eb050[0x1055ec050&quot;test2&quot;, 0x1055ec078&quot;test2&quot;]</span>
<span class="Identifier">echo</span> <span class="Identifier">repr</span><span class="Punctuation">(</span><span class="Identifier">i</span><span class="Punctuation">)</span> <span class="Comment"># =&gt; 0x1055ed050[1, 2, 3, 4, 5]</span></pre>
</dd>
<a id="toFloat,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#toFloat%2Cint"><span class="Identifier">toFloat</span></a><span class="Other">(</span><span class="Identifier">i</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Converts an integer <tt class="docutils literal"><span class="pre">i</span></tt> into a <tt class="docutils literal"><span class="pre">float</span></tt>.</p>
<p>If the conversion fails, <tt class="docutils literal"><span class="pre">ValueError</span></tt> is raised. However, on most platforms the conversion cannot fail.</p>
<pre class="listing"><span class="Keyword">let</span>
<span class="Identifier">a</span> <span class="Operator">=</span> <span class="DecNumber">2</span>
<span class="Identifier">b</span> <span class="Operator">=</span> <span class="FloatNumber">3.7</span>
<span class="Identifier">echo</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">toFloat</span> <span class="Operator">+</span> <span class="Identifier">b</span> <span class="Comment"># =&gt; 5.7</span></pre>
</dd>
<a id="toBiggestFloat,BiggestInt"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#toBiggestFloat%2CBiggestInt"><span class="Identifier">toBiggestFloat</span></a><span class="Other">(</span><span class="Identifier">i</span><span class="Other">:</span> <a href="system.html#BiggestInt"><span class="Identifier">BiggestInt</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#BiggestFloat"><span class="Identifier">BiggestFloat</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span>
<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><span class="Other">.}</span></span></pre></dt>
<dd>
Same as <a class="reference external" href="#toFloat,int">toFloat</a> but for <tt class="docutils literal"><span class="pre">BiggestInt</span></tt> to <tt class="docutils literal"><span class="pre">BiggestFloat</span></tt>.
</dd>
<a id="toInt,float"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#toInt%2Cfloat"><span class="Identifier">toInt</span></a><span class="Other">(</span><span class="Identifier">f</span><span class="Other">:</span> <a href="system.html#float"><span class="Identifier">float</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Converts a floating point number <tt class="docutils literal"><span class="pre">f</span></tt> into an <tt class="docutils literal"><span class="pre">int</span></tt>.</p>
<p>Conversion rounds <tt class="docutils literal"><span class="pre">f</span></tt> half away from 0, see <a class="reference external" href="https://en.wikipedia.org/wiki/Rounding#Round_half_away_from_zero">Round half away from zero</a>.</p>
<p>Note that some floating point numbers (e.g. infinity or even 1e19) cannot be accurately converted.</p>
<pre class="listing"><span class="Identifier">doAssert</span> <span class="Identifier">toInt</span><span class="Punctuation">(</span><span class="FloatNumber">0.49</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">0</span>
<span class="Identifier">doAssert</span> <span class="Identifier">toInt</span><span class="Punctuation">(</span><span class="FloatNumber">0.5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="DecNumber">1</span>
<span class="Identifier">doAssert</span> <span class="Identifier">toInt</span><span class="Punctuation">(</span><span class="Operator">-</span><span class="FloatNumber">0.5</span><span class="Punctuation">)</span> <span class="Operator">==</span> <span class="Operator">-</span><span class="DecNumber">1</span> <span class="Comment"># rounding is symmetrical</span></pre>
</dd>
<a id="toBiggestInt,BiggestFloat"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#toBiggestInt%2CBiggestFloat"><span class="Identifier">toBiggestInt</span></a><span class="Other">(</span><span class="Identifier">f</span><span class="Other">:</span> <a href="system.html#BiggestFloat"><span class="Identifier">BiggestFloat</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#BiggestInt"><span class="Identifier">BiggestInt</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Same as <a class="reference external" href="#toInt,float">toInt</a> but for <tt class="docutils literal"><span class="pre">BiggestFloat</span></tt> to <tt class="docutils literal"><span class="pre">BiggestInt</span></tt>.
</dd>
<a id="addQuitProc,proc)"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#addQuitProc%2Cproc%29"><span class="Identifier">addQuitProc</span></a><span class="Other">(</span><span class="Identifier">quitProc</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noconv</span></span><span class="Other">.}</span></span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;atexit&quot;</span><span class="Other">,</span>
<span class="Identifier">header</span><span class="Other">:</span> <span class="StringLit">&quot;&lt;stdlib.h&gt;&quot;</span><span class="Other">,</span> <span class="Identifier">deprecated</span><span class="Other">:</span> <span class="StringLit">&quot;use exitprocs.addExitProc&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<div class="deprecation-message">
<b>Deprecated:</b> use exitprocs.addExitProc
</div>
<p>Adds/registers a quit procedure.</p>
<p>Each call to <tt class="docutils literal"><span class="pre">addQuitProc</span></tt> registers another quit procedure. Up to 30 procedures can be registered. They are executed on a last-in, first-out basis (that is, the last function registered is the first to be executed). <tt class="docutils literal"><span class="pre">addQuitProc</span></tt> raises an EOutOfIndex exception if <tt class="docutils literal"><span class="pre">quitProc</span></tt> cannot be registered.</p>
</dd>
<a id="swap,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#swap%2CT%2CT"><span class="Identifier">swap</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Swap&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Swaps the values <tt class="docutils literal"><span class="pre">a</span></tt> and <tt class="docutils literal"><span class="pre">b</span></tt>.</p>
<p>This is often more efficient than <tt class="docutils literal"><span class="pre">tmp = a; a = b; b = tmp</span></tt>. Particularly useful for sorting algorithms.</p>
<pre class="listing"><span class="Keyword">var</span>
<span class="Identifier">a</span> <span class="Operator">=</span> <span class="DecNumber">5</span>
<span class="Identifier">b</span> <span class="Operator">=</span> <span class="DecNumber">9</span>
<span class="Identifier">swap</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">assert</span> <span class="Identifier">a</span> <span class="Operator">==</span> <span class="DecNumber">9</span>
<span class="Identifier">assert</span> <span class="Identifier">b</span> <span class="Operator">==</span> <span class="DecNumber">5</span></pre>
</dd>
<a id="-,AllocStats,AllocStats"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#-%2CAllocStats%2CAllocStats"><span class="Identifier">`-`</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="system.html#AllocStats"><span class="Identifier">AllocStats</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#AllocStats"><span class="Identifier">AllocStats</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="getAllocStats"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#getAllocStats"><span class="Identifier">getAllocStats</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#AllocStats"><span class="Identifier">AllocStats</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="createU,typedesc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#createU%2Ctypedesc"><span class="Identifier">createU</span></a><span class="Other">(</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">;</span> <span class="Identifier">size</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">.</span><span class="Identifier">Positive</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T:type</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Allocates a new memory block with at least <tt class="docutils literal"><span class="pre">T.sizeof * size</span></tt> bytes.</p>
<p>The block has to be freed with <a class="reference external" href="#resize,ptr.T,Natural">resize(block, 0)</a> or <a class="reference external" href="#dealloc,pointer">dealloc(block)</a>. The block is not initialized, so reading from it before writing to it is undefined behaviour!</p>
<p>The allocated memory belongs to its allocating thread! Use <a class="reference external" href="#createSharedU,typedesc">createSharedU</a> to allocate from a shared heap.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#create,typedesc">create</a></li>
</ul>
</dd>
<a id="create,typedesc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#create%2Ctypedesc"><span class="Identifier">create</span></a><span class="Other">(</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">;</span> <span class="Identifier">size</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">.</span><span class="Identifier">Positive</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T:type</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Allocates a new memory block with at least <tt class="docutils literal"><span class="pre">T.sizeof * size</span></tt> bytes.</p>
<p>The block has to be freed with <a class="reference external" href="#resize,ptr.T,Natural">resize(block, 0)</a> or <a class="reference external" href="#dealloc,pointer">dealloc(block)</a>. The block is initialized with all bytes containing zero, so it is somewhat safer than <a class="reference external" href="#createU,typedesc">createU</a>.</p>
<p>The allocated memory belongs to its allocating thread! Use <a class="reference external" href="#createShared,typedesc">createShared</a> to allocate from a shared heap.</p>
</dd>
<a id="resize,ptr.T,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#resize%2Cptr.T%2CNatural"><span class="Identifier">resize</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">newSize</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Grows or shrinks a given memory block.</p>
<p>If <tt class="docutils literal"><span class="pre">p</span></tt> is <strong>nil</strong> then a new memory block is returned. In either way the block has at least <tt class="docutils literal"><span class="pre">T.sizeof * newSize</span></tt> bytes. If <tt class="docutils literal"><span class="pre">newSize == 0</span></tt> and <tt class="docutils literal"><span class="pre">p</span></tt> is not <strong>nil</strong> <tt class="docutils literal"><span class="pre">resize</span></tt> calls <tt class="docutils literal"><span class="pre">dealloc(p)</span></tt>. In other cases the block has to be freed with <tt class="docutils literal"><span class="pre">free</span></tt>.</p>
<p>The allocated memory belongs to its allocating thread! Use <a class="reference external" href="#resizeShared,ptr.T,Natural">resizeShared</a> to reallocate from a shared heap.</p>
</dd>
<a id="dealloc,pointer"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#dealloc%2Cpointer"><span class="Identifier">dealloc</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noconv</span><span class="Other">,</span> <span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span>
<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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Frees the memory allocated with <tt class="docutils literal"><span class="pre">alloc</span></tt>, <tt class="docutils literal"><span class="pre">alloc0</span></tt> or <tt class="docutils literal"><span class="pre">realloc</span></tt>.</p>
<p><strong>This procedure is dangerous!</strong> If one forgets to free the memory a leak occurs; if one tries to access freed memory (or just freeing it twice!) a core dump may happen or other memory may be corrupted.</p>
<p>The freed memory must belong to its allocating thread! Use <a class="reference external" href="#deallocShared,pointer">deallocShared</a> to deallocate from a shared heap.</p>
</dd>
<a id="createSharedU,typedesc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#createSharedU%2Ctypedesc"><span class="Identifier">createSharedU</span></a><span class="Other">(</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">;</span> <span class="Identifier">size</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">.</span><span class="Identifier">Positive</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T:type</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</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">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Allocates a new memory block on the shared heap with at least <tt class="docutils literal"><span class="pre">T.sizeof * size</span></tt> bytes.</p>
<p>The block has to be freed with <a class="reference external" href="#resizeShared,ptr.T,Natural">resizeShared(block, 0)</a> or <a class="reference external" href="#freeShared,ptr.T">freeShared(block)</a>.</p>
<p>The block is not initialized, so reading from it before writing to it is undefined behaviour!</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#createShared,typedesc">createShared</a></li>
</ul>
</dd>
<a id="createShared,typedesc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#createShared%2Ctypedesc"><span class="Identifier">createShared</span></a><span class="Other">(</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">;</span> <span class="Identifier">size</span> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">.</span><span class="Identifier">Positive</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T:type</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Allocates a new memory block on the shared heap with at least <tt class="docutils literal"><span class="pre">T.sizeof * size</span></tt> bytes.</p>
<p>The block has to be freed with <a class="reference external" href="#resizeShared,ptr.T,Natural">resizeShared(block, 0)</a> or <a class="reference external" href="#freeShared,ptr.T">freeShared(block)</a>.</p>
<p>The block is initialized with all bytes containing zero, so it is somewhat safer than <a class="reference external" href="#createSharedU,typedesc">createSharedU</a>.</p>
</dd>
<a id="resizeShared,ptr.T,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#resizeShared%2Cptr.T%2CNatural"><span class="Identifier">resizeShared</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">newSize</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Grows or shrinks a given memory block on the heap.</p>
<p>If <tt class="docutils literal"><span class="pre">p</span></tt> is <strong>nil</strong> then a new memory block is returned. In either way the block has at least <tt class="docutils literal"><span class="pre">T.sizeof * newSize</span></tt> bytes. If <tt class="docutils literal"><span class="pre">newSize == 0</span></tt> and <tt class="docutils literal"><span class="pre">p</span></tt> is not <strong>nil</strong> <tt class="docutils literal"><span class="pre">resizeShared</span></tt> calls <tt class="docutils literal"><span class="pre">freeShared(p)</span></tt>. In other cases the block has to be freed with <a class="reference external" href="#freeShared,ptr.T">freeShared</a>.</p>
</dd>
<a id="deallocShared,pointer"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#deallocShared%2Cpointer"><span class="Identifier">deallocShared</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noconv</span><span class="Other">,</span> <span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span>
<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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Frees the memory allocated with <tt class="docutils literal"><span class="pre">allocShared</span></tt>, <tt class="docutils literal"><span class="pre">allocShared0</span></tt> or <tt class="docutils literal"><span class="pre">reallocShared</span></tt>.</p>
<p><strong>This procedure is dangerous!</strong> If one forgets to free the memory a leak occurs; if one tries to access freed memory (or just freeing it twice!) a core dump may happen or other memory may be corrupted.</p>
</dd>
<a id="freeShared,ptr.T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#freeShared%2Cptr.T"><span class="Identifier">freeShared</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Frees the memory allocated with <tt class="docutils literal"><span class="pre">createShared</span></tt>, <tt class="docutils literal"><span class="pre">createSharedU</span></tt> or <tt class="docutils literal"><span class="pre">resizeShared</span></tt>.</p>
<p><strong>This procedure is dangerous!</strong> If one forgets to free the memory a leak occurs; if one tries to access freed memory (or just freeing it twice!) a core dump may happen or other memory may be corrupted.</p>
</dd>
<a id="|,typedesc,typedesc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%7C%2Ctypedesc%2Ctypedesc"><span class="Identifier">`|`</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a></pre></dt>
<dd>
</dd>
<a id="abs,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#abs%2CT"><span class="Identifier">abs</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> <span class="Operator">|</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="min,float32,float32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#min%2Cfloat32%2Cfloat32"><span class="Identifier">min</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="min,float64,float64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#min%2Cfloat64%2Cfloat64"><span class="Identifier">min</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="max,float32,float32"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#max%2Cfloat32%2Cfloat32"><span class="Identifier">max</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float32"><span class="Identifier">float32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="max,float64,float64"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#max%2Cfloat64%2Cfloat64"><span class="Identifier">max</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#float64"><span class="Identifier">float64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="min,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#min%2CT%2CT"><span class="Identifier">min</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <span class="Keyword">not</span> <a href="system.html#SomeFloat"><span class="Identifier">SomeFloat</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="max,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#max%2CT%2CT"><span class="Identifier">max</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <span class="Keyword">not</span> <a href="system.html#SomeFloat"><span class="Identifier">SomeFloat</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="high,typedesc[SomeFloat]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#high%2Ctypedesc%5BSomeFloat%5D"><span class="Identifier">high</span></a><span class="Other">(</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">[</span><a href="system.html#SomeFloat"><span class="Identifier">SomeFloat</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T:type</span></pre></dt>
<dd>
</dd>
<a id="low,typedesc[SomeFloat]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#low%2Ctypedesc%5BSomeFloat%5D"><span class="Identifier">low</span></a><span class="Other">(</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">[</span><a href="system.html#SomeFloat"><span class="Identifier">SomeFloat</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T:type</span></pre></dt>
<dd>
</dd>
<a id="len,HSlice[U: Ordinal,V: Ordinal]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#len%2CHSlice%5BU%3A+Ordinal%2CV%3A+Ordinal%5D"><span class="Identifier">len</span></a><span class="Other">[</span><span class="Identifier">U</span><span class="Other">:</span> <a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a><span class="Other">;</span> <span class="Identifier">V</span><span class="Other">:</span> <a href="system.html#Ordinal"><span class="Identifier">Ordinal</span></a><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#HSlice"><span class="Identifier">HSlice</span></a><span class="Other">[</span><span class="Identifier">U</span><span class="Other">,</span> <span class="Identifier">V</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">inline</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Length of ordinal slice. When x.b &lt; x.a returns zero length.<pre class="listing"><span class="Identifier">assert</span><span class="Punctuation">(</span><span class="Punctuation">(</span><span class="FloatNumber">0.</span><span class="Operator">.</span><span class="DecNumber">5</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">len</span> <span class="Operator">==</span> <span class="DecNumber">6</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span><span class="Punctuation">(</span><span class="Punctuation">(</span><span class="FloatNumber">5.</span><span class="Operator">.</span><span class="DecNumber">2</span><span class="Punctuation">)</span><span class="Operator">.</span><span class="Identifier">len</span> <span class="Operator">==</span> <span class="DecNumber">0</span><span class="Punctuation">)</span></pre>
</dd>
<a id="isNil,seq[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#isNil%2Cseq%5BT%5D"><span class="Identifier">isNil</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;IsNil&quot;</span><span class="Other">,</span> <span class="Identifier">error</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Requires <tt class="docutils literal"><span class="pre">--nilseqs:on</span></tt> since 0.19.</p>
<p>Seqs are no longer nil by default, but set and empty. Check for zero length instead.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#isNil,string">isNil(string)</a></li>
</ul>
</dd>
<a id="isNil,ref.T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#isNil%2Cref.T"><span class="Identifier">isNil</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">ref</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;IsNil&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="isNil,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#isNil%2Cstring"><span class="Identifier">isNil</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;IsNil&quot;</span><span class="Other">,</span> <span class="Identifier">error</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Requires <tt class="docutils literal"><span class="pre">--nilseqs:on</span></tt>.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#isNil,seq[T]">isNil(seq[T])</a></li>
</ul>
</dd>
<a id="isNil,ptr.T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#isNil%2Cptr.T"><span class="Identifier">isNil</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;IsNil&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="isNil,pointer"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#isNil%2Cpointer"><span class="Identifier">isNil</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;IsNil&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="isNil,cstring"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#isNil%2Ccstring"><span class="Identifier">isNil</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#cstring"><span class="Identifier">cstring</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;IsNil&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="isNil,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#isNil%2CT"><span class="Identifier">isNil</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <span class="Keyword">proc</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;IsNil&quot;</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Fast check whether <tt class="docutils literal"><span class="pre">x</span></tt> is nil. This is sometimes more efficient than <tt class="docutils literal"><span class="pre">== nil</span></tt>.
</dd>
<a id="@,openArray[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%40%2CopenArray%5BT%5D"><span class="Identifier">`@`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span></pre></dt>
<dd>
<p>Turns an <em>openArray</em> into a sequence.</p>
<p>This is not as efficient as turning a fixed length array into a sequence as it always copies every element of <tt class="docutils literal"><span class="pre">a</span></tt>.</p>
</dd>
<a id="&,seq[T],seq[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%26%2Cseq%5BT%5D%2Cseq%5BT%5D"><span class="Identifier">`&amp;`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Concatenates two sequences.</p>
<p>Requires copying of the sequences.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#add,seq[T],openArray[T]">add(var seq[T], openArray[T])</a></li>
</ul>
<pre class="listing"><span class="Identifier">assert</span><span class="Punctuation">(</span><span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">]</span> <span class="Operator">&amp;</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">5</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">,</span> <span class="DecNumber">6</span><span class="Punctuation">]</span><span class="Punctuation">)</span></pre>
</dd>
<a id="&,seq[T],T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%26%2Cseq%5BT%5D%2CT"><span class="Identifier">`&amp;`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Appends element y to the end of the sequence.</p>
<p>Requires copying of the sequence.</p>
<p>See also:</p>
<ul class="simple"><li><a class="reference external" href="#add,seq[T],sinkT">add(var seq[T], T)</a></li>
</ul>
<pre class="listing"><span class="Identifier">assert</span><span class="Punctuation">(</span><span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">]</span> <span class="Operator">&amp;</span> <span class="DecNumber">4</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">]</span><span class="Punctuation">)</span></pre>
</dd>
<a id="&,T,seq[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%26%2CT%2Cseq%5BT%5D"><span class="Identifier">`&amp;`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Prepends the element x to the beginning of the sequence.</p>
<p>Requires copying of the sequence.</p>
<pre class="listing"><span class="Identifier">assert</span><span class="Punctuation">(</span><span class="DecNumber">1</span> <span class="Operator">&amp;</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">]</span> <span class="Operator">==</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">4</span><span class="Punctuation">]</span><span class="Punctuation">)</span></pre>
</dd>
<a id="astToStr,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#astToStr%2CT"><span class="Identifier">astToStr</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AstToStr&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Converts the AST of <tt class="docutils literal"><span class="pre">x</span></tt> into a string representation. This is very useful for debugging.
</dd>
<a id="instantiationInfo"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#instantiationInfo"><span class="Identifier">instantiationInfo</span></a><span class="Other">(</span><span class="Identifier">index</span> <span class="Other">=</span> <span class="Operator">-</span><span class="DecNumber">1</span><span class="Other">;</span> <span class="Identifier">fullPaths</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span><span class="Other">:</span> <span class="Keyword">tuple</span><span class="Other">[</span><span class="Identifier">filename</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">,</span>
<span class="Identifier">line</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">,</span> <span class="Identifier">column</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;InstantiationInfo&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Provides access to the compiler's instantiation stack line information of a template.</p>
<p>While similar to the <span id="caller-info_1">caller info</span> of other languages, it is determined at compile time.</p>
<p>This proc is mostly useful for meta programming (eg. <tt class="docutils literal"><span class="pre">assert</span></tt> template) to retrieve information about the current filename and line number. Example:</p>
<pre class="listing"><span class="Keyword">import</span> <span class="Identifier">strutils</span>
<span class="Keyword">template</span> <span class="Identifier">testException</span><span class="Punctuation">(</span><span class="Identifier">exception</span><span class="Punctuation">,</span> <span class="Identifier">code</span><span class="Punctuation">:</span> <span class="Identifier">untyped</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Identifier">typed</span> <span class="Operator">=</span>
<span class="Keyword">try</span><span class="Punctuation">:</span>
<span class="Keyword">let</span> <span class="Identifier">pos</span> <span class="Operator">=</span> <span class="Identifier">instantiationInfo</span><span class="Punctuation">(</span><span class="Punctuation">)</span>
<span class="Keyword">discard</span><span class="Punctuation">(</span><span class="Identifier">code</span><span class="Punctuation">)</span>
<span class="Identifier">echo</span> <span class="StringLit">&quot;Test failure at $1:$2 with '$3'&quot;</span> <span class="Operator">%</span> <span class="Punctuation">[</span><span class="Identifier">pos</span><span class="Operator">.</span><span class="Identifier">filename</span><span class="Punctuation">,</span>
<span class="Operator">$</span><span class="Identifier">pos</span><span class="Operator">.</span><span class="Identifier">line</span><span class="Punctuation">,</span> <span class="Identifier">astToStr</span><span class="Punctuation">(</span><span class="Identifier">code</span><span class="Punctuation">)</span><span class="Punctuation">]</span>
<span class="Identifier">assert</span> <span class="Identifier">false</span><span class="Punctuation">,</span> <span class="StringLit">&quot;A test expecting failure succeeded?&quot;</span>
<span class="Keyword">except</span> <span class="Identifier">exception</span><span class="Punctuation">:</span>
<span class="Keyword">discard</span>
<span class="Keyword">proc</span> <span class="Identifier">tester</span><span class="Punctuation">(</span><span class="Identifier">pos</span><span class="Punctuation">:</span> <span class="Identifier">int</span><span class="Punctuation">)</span><span class="Punctuation">:</span> <span class="Identifier">int</span> <span class="Operator">=</span>
<span class="Keyword">let</span>
<span class="Identifier">a</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">2</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">]</span>
<span class="Identifier">result</span> <span class="Operator">=</span> <span class="Identifier">a</span><span class="Punctuation">[</span><span class="Identifier">pos</span><span class="Punctuation">]</span>
<span class="Keyword">when</span> <span class="Identifier">isMainModule</span><span class="Punctuation">:</span>
<span class="Identifier">testException</span><span class="Punctuation">(</span><span class="Identifier">IndexDefect</span><span class="Punctuation">,</span> <span class="Identifier">tester</span><span class="Punctuation">(</span><span class="DecNumber">30</span><span class="Punctuation">)</span><span class="Punctuation">)</span>
<span class="Identifier">testException</span><span class="Punctuation">(</span><span class="Identifier">IndexDefect</span><span class="Punctuation">,</span> <span class="Identifier">tester</span><span class="Punctuation">(</span><span class="DecNumber">1</span><span class="Punctuation">)</span><span class="Punctuation">)</span>
<span class="Comment"># --&gt; Test failure at example.nim:20 with 'tester(1)'</span></pre>
</dd>
<a id="compiles,untyped"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#compiles%2Cuntyped"><span class="Identifier">compiles</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Compiles&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span><span class="Other">,</span> <span class="Identifier">compileTime</span><span class="Other">,</span>
<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><span class="Other">.}</span></span></pre></dt>
<dd>
Special compile-time procedure that checks whether <tt class="docutils literal"><span class="pre">x</span></tt> can be compiled without any semantic error. This can be used to check whether a type supports some operation:<pre class="listing"><span class="Keyword">when</span> <span class="Identifier">compiles</span><span class="Punctuation">(</span><span class="DecNumber">3</span> <span class="Operator">+</span> <span class="DecNumber">4</span><span class="Punctuation">)</span><span class="Punctuation">:</span>
<span class="Identifier">echo</span> <span class="StringLit">&quot;'+' for integers is available&quot;</span></pre>
</dd>
<a id="atomicInc,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#atomicInc%2Cint%2Cint"><span class="Identifier">atomicInc</span></a><span class="Other">(</span><span class="Identifier">memLoc</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">;</span> <span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">discardable</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Atomic increment of <tt class="docutils literal"><span class="pre">memLoc</span></tt>. Returns the value after the operation.
</dd>
<a id="atomicDec,int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#atomicDec%2Cint%2Cint"><span class="Identifier">atomicDec</span></a><span class="Other">(</span><span class="Identifier">memLoc</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">;</span> <span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Other">=</span> <span class="DecNumber">1</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">discardable</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Atomic decrement of <tt class="docutils literal"><span class="pre">memLoc</span></tt>. Returns the value after the operation.
</dd>
<a id="addAndFetch,ptr.int,int"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#addAndFetch%2Cptr.int%2Cint"><span class="Identifier">addAndFetch</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <span class="Keyword">ptr</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">;</span> <span class="Identifier">val</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="cas,ptr.T,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#cas%2Cptr.T%2CT%2CT"><span class="Identifier">cas</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span class="Operator">|</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span class="Operator">|</span> <span class="Keyword">ptr</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <span class="Keyword">ptr</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">oldValue</span><span class="Other">,</span> <span class="Identifier">newValue</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
<span class="Identifier">importc</span><span class="Other">:</span> <span class="StringLit">&quot;__sync_bool_compare_and_swap&quot;</span><span class="Other">,</span> <span class="Identifier">nodecl</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="cpuRelax"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#cpuRelax"><span class="Identifier">cpuRelax</span></a><span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="find,T,S"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#find%2CT%2CS"><span class="Identifier">find</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">,</span> <span class="Identifier">S</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">;</span> <span class="Identifier">item</span><span class="Other">:</span> <span class="Identifier">S</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Returns the first index of <tt class="docutils literal"><span class="pre">item</span></tt> in <tt class="docutils literal"><span class="pre">a</span></tt> or -1 if not found. This requires appropriate <tt class="docutils literal"><span class="pre">items</span></tt> and <tt class="docutils literal"><span class="pre">==</span></tt> operations to work.
</dd>
<a id="contains,openArray[T],T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#contains%2CopenArray%5BT%5D%2CT"><span class="Identifier">contains</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">;</span> <span class="Identifier">item</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns true if <tt class="docutils literal"><span class="pre">item</span></tt> is in <tt class="docutils literal"><span class="pre">a</span></tt> or false if not found. This is a shortcut for <tt class="docutils literal"><span class="pre">find(a, item) &gt;= 0</span></tt>.</p>
<p>This allows the <tt class="docutils literal"><span class="pre">in</span></tt> operator: <tt class="docutils literal"><span class="pre">a.contains(item)</span></tt> is the same as <tt class="docutils literal"><span class="pre">item in a</span></tt>.</p>
<pre class="listing"><span class="Keyword">var</span> <span class="Identifier">a</span> <span class="Operator">=</span> <span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span> <span class="DecNumber">3</span><span class="Punctuation">,</span> <span class="DecNumber">5</span><span class="Punctuation">]</span>
<span class="Identifier">assert</span> <span class="Identifier">a</span><span class="Operator">.</span><span class="Identifier">contains</span><span class="Punctuation">(</span><span class="DecNumber">5</span><span class="Punctuation">)</span>
<span class="Identifier">assert</span> <span class="DecNumber">3</span> <span class="Keyword">in</span> <span class="Identifier">a</span>
<span class="Identifier">assert</span> <span class="DecNumber">99</span> <span class="Keyword">notin</span> <span class="Identifier">a</span></pre>
</dd>
<a id="pop,seq[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#pop%2Cseq%5BT%5D"><span class="Identifier">pop</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">T</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">noSideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Returns the last item of <tt class="docutils literal"><span class="pre">s</span></tt> and decreases <tt class="docutils literal"><span class="pre">s.len</span></tt> by one. This treats <tt class="docutils literal"><span class="pre">s</span></tt> as a stack and implements the common <em>pop</em> operation.
<p><strong class="examples_text">Example:</strong></p>
<pre class="listing"><span class="Keyword">var</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">7</span><span class="Punctuation">]</span><span class="Whitespace">
</span><span class="Keyword">let</span><span class="Whitespace"> </span><span class="Identifier">b</span><span class="Whitespace"> </span><span class="Operator">=</span><span class="Whitespace"> </span><span class="Identifier">pop</span><span class="Punctuation">(</span><span class="Identifier">a</span><span class="Punctuation">)</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">b</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="DecNumber">7</span><span class="Whitespace">
</span><span class="Identifier">assert</span><span class="Whitespace"> </span><span class="Identifier">a</span><span class="Whitespace"> </span><span class="Operator">==</span><span class="Whitespace"> </span><span class="Operator">@</span><span class="Punctuation">[</span><span class="DecNumber">1</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">3</span><span class="Punctuation">,</span><span class="Whitespace"> </span><span class="DecNumber">5</span><span class="Punctuation">]</span></pre>
</dd>
<a id="==,T,T_2"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3D%3D%2CT%2CT_2"><span class="Identifier">`==`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <span class="Keyword">tuple</span> <span class="Operator">|</span> <span class="Keyword">object</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a></pre></dt>
<dd>
Generic <tt class="docutils literal"><span class="pre">==</span></tt> operator for tuples that is lifted from the components. of <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>.
</dd>
<a id="<=,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%3D%2CT%2CT"><span class="Identifier">`&lt;=`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <span class="Keyword">tuple</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a></pre></dt>
<dd>
Generic lexicographic <tt class="docutils literal"><span class="pre">&lt;=</span></tt> operator for tuples that is lifted from the components of <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>. This implementation uses <tt class="docutils literal"><span class="pre">cmp</span></tt>.
</dd>
<a id="<,T,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#%3C%2CT%2CT"><span class="Identifier">`&lt;`</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">:</span> <span class="Keyword">tuple</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a></pre></dt>
<dd>
Generic lexicographic <tt class="docutils literal"><span class="pre">&lt;</span></tt> operator for tuples that is lifted from the components of <tt class="docutils literal"><span class="pre">x</span></tt> and <tt class="docutils literal"><span class="pre">y</span></tt>. This implementation uses <tt class="docutils literal"><span class="pre">cmp</span></tt>.
</dd>
<a id="GC_ref,ref.T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#GC_ref%2Cref.T"><span class="Identifier">GC_ref</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">ref</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;GCref&quot;</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="GC_ref,seq[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#GC_ref%2Cseq%5BT%5D"><span class="Identifier">GC_ref</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;GCref&quot;</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="GC_ref,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#GC_ref%2Cstring"><span class="Identifier">GC_ref</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;GCref&quot;</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Marks the object <tt class="docutils literal"><span class="pre">x</span></tt> as referenced, so that it will not be freed until it is unmarked via <tt class="docutils literal"><span class="pre">GC_unref</span></tt>. If called n-times for the same object <tt class="docutils literal"><span class="pre">x</span></tt>, n calls to <tt class="docutils literal"><span class="pre">GC_unref</span></tt> are needed to unmark <tt class="docutils literal"><span class="pre">x</span></tt>.
</dd>
<a id="GC_unref,ref.T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#GC_unref%2Cref.T"><span class="Identifier">GC_unref</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">ref</span> <span class="Identifier">T</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;GCunref&quot;</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="GC_unref,seq[T]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#GC_unref%2Cseq%5BT%5D"><span class="Identifier">GC_unref</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;GCunref&quot;</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="GC_unref,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#GC_unref%2Cstring"><span class="Identifier">GC_unref</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;GCunref&quot;</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
See the documentation of <a class="reference external" href="#GC_ref,string">GC_ref</a>.
</dd>
<a id="add,string,cstring"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#add%2Cstring%2Ccstring"><span class="Identifier">add</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">;</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#cstring"><span class="Identifier">cstring</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="echo,varargs[typed,]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#echo%2Cvarargs%5Btyped%2C%5D"><span class="Identifier">echo</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#varargs"><span class="Identifier">varargs</span></a><span class="Other">[</span><a href="system.html#typed"><span class="Identifier">typed</span></a><span class="Other">,</span> <span class="Other">`</span><span class="Operator">$</span><span class="Other">`</span><span class="Other">]</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Echo&quot;</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><a href="system.html#WriteIOEffect"><span class="Identifier">WriteIOEffect</span></a><span class="Other">]</span><span class="Other">,</span>
<span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">sideEffect</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Writes and flushes the parameters to the standard output.</p>
<p>Special built-in that takes a variable number of arguments. Each argument is converted to a string via <tt class="docutils literal"><span class="pre">$</span></tt>, so it works for user-defined types that have an overloaded <tt class="docutils literal"><span class="pre">$</span></tt> operator. It is roughly equivalent to <tt class="docutils literal"><span class="pre">writeLine(stdout, x); flushFile(stdout)</span></tt>, but available for the JavaScript target too.</p>
<p>Unlike other IO operations this is guaranteed to be thread-safe as <tt class="docutils literal"><span class="pre">echo</span></tt> is very often used for debugging convenience. If you want to use <tt class="docutils literal"><span class="pre">echo</span></tt> inside a <a class="reference external" href="manual.html#pragmas-nosideeffect-pragma">proc without side effects</a> you can use <a class="reference external" href="#debugEcho,varargs[typed,]">debugEcho</a> instead.</p>
</dd>
<a id="debugEcho,varargs[typed,]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#debugEcho%2Cvarargs%5Btyped%2C%5D"><span class="Identifier">debugEcho</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#varargs"><span class="Identifier">varargs</span></a><span class="Other">[</span><a href="system.html#typed"><span class="Identifier">typed</span></a><span class="Other">,</span> <span class="Other">`</span><span class="Operator">$</span><span class="Other">`</span><span class="Other">]</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Echo&quot;</span><span class="Other">,</span> <span class="Identifier">noSideEffect</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">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Same as <a class="reference external" href="#echo,varargs[typed,]">echo</a>, but as a special semantic rule, <tt class="docutils literal"><span class="pre">debugEcho</span></tt> pretends to be free of side effects, so that it can be used for debugging routines marked as <a class="reference external" href="manual.html#pragmas-nosideeffect-pragma">noSideEffect</a>.
</dd>
<a id="getTypeInfo,T"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#getTypeInfo%2CT"><span class="Identifier">getTypeInfo</span></a><span class="Other">[</span><span class="Identifier">T</span><span class="Other">]</span><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <span class="Identifier">T</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;GetTypeInfo&quot;</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Get type information for <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>Ordinary code should not use this, but the <a class="reference external" href="typeinfo.html">typeinfo module</a> instead.</p>
</dd>
<a id="abs,int"></a>
<dt><pre><span class="Keyword">func</span> <a href="#abs%2Cint"><span class="Identifier">abs</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AbsI&quot;</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="abs,int8"></a>
<dt><pre><span class="Keyword">func</span> <a href="#abs%2Cint8"><span class="Identifier">abs</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int8"><span class="Identifier">int8</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AbsI&quot;</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="abs,int16"></a>
<dt><pre><span class="Keyword">func</span> <a href="#abs%2Cint16"><span class="Identifier">abs</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int16"><span class="Identifier">int16</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AbsI&quot;</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="abs,int32"></a>
<dt><pre><span class="Keyword">func</span> <a href="#abs%2Cint32"><span class="Identifier">abs</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int32"><span class="Identifier">int32</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AbsI&quot;</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="abs,int64"></a>
<dt><pre><span class="Keyword">func</span> <a href="#abs%2Cint64"><span class="Identifier">abs</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int64"><span class="Identifier">int64</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;AbsI&quot;</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Returns the absolute value of <tt class="docutils literal"><span class="pre">x</span></tt>.</p>
<p>If <tt class="docutils literal"><span class="pre">x</span></tt> is <tt class="docutils literal"><span class="pre">low(x)</span></tt> (that is -MININT for its type), an overflow exception is thrown (if overflow checking is turned on).</p>
</dd>
<a id="zeroMem,pointer,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#zeroMem%2Cpointer%2CNatural"><span class="Identifier">zeroMem</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">;</span> <span class="Identifier">size</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">noSideEffect</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">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Overwrites the contents of the memory at <tt class="docutils literal"><span class="pre">p</span></tt> with the value 0.</p>
<p>Exactly <tt class="docutils literal"><span class="pre">size</span></tt> bytes will be overwritten. Like any procedure dealing with raw memory this is <strong>unsafe</strong>.</p>
</dd>
<a id="copyMem,pointer,pointer,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#copyMem%2Cpointer%2Cpointer%2CNatural"><span class="Identifier">copyMem</span></a><span class="Other">(</span><span class="Identifier">dest</span><span class="Other">,</span> <span class="Identifier">source</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">;</span> <span class="Identifier">size</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</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">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Copies the contents from the memory at <tt class="docutils literal"><span class="pre">source</span></tt> to the memory at <tt class="docutils literal"><span class="pre">dest</span></tt>. Exactly <tt class="docutils literal"><span class="pre">size</span></tt> bytes will be copied. The memory regions may not overlap. Like any procedure dealing with raw memory this is <strong>unsafe</strong>.
</dd>
<a id="moveMem,pointer,pointer,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#moveMem%2Cpointer%2Cpointer%2CNatural"><span class="Identifier">moveMem</span></a><span class="Other">(</span><span class="Identifier">dest</span><span class="Other">,</span> <span class="Identifier">source</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">;</span> <span class="Identifier">size</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</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">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Copies the contents from the memory at <tt class="docutils literal"><span class="pre">source</span></tt> to the memory at <tt class="docutils literal"><span class="pre">dest</span></tt>.</p>
<p>Exactly <tt class="docutils literal"><span class="pre">size</span></tt> bytes will be copied. The memory regions may overlap, <tt class="docutils literal"><span class="pre">moveMem</span></tt> handles this case appropriately and is thus somewhat more safe than <tt class="docutils literal"><span class="pre">copyMem</span></tt>. Like any procedure dealing with raw memory this is still <strong>unsafe</strong>, though.</p>
</dd>
<a id="equalMem,pointer,pointer,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#equalMem%2Cpointer%2Cpointer%2CNatural"><span class="Identifier">equalMem</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">;</span> <span class="Identifier">size</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">noSideEffect</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">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Compares the memory blocks <tt class="docutils literal"><span class="pre">a</span></tt> and <tt class="docutils literal"><span class="pre">b</span></tt>. <tt class="docutils literal"><span class="pre">size</span></tt> bytes will be compared.</p>
<p>If the blocks are equal, <tt class="docutils literal"><span class="pre">true</span></tt> is returned, <tt class="docutils literal"><span class="pre">false</span></tt> otherwise. Like any procedure dealing with raw memory this is <strong>unsafe</strong>.</p>
</dd>
<a id="cmpMem,pointer,pointer,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#cmpMem%2Cpointer%2Cpointer%2CNatural"><span class="Identifier">cmpMem</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">,</span> <span class="Identifier">b</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">;</span> <span class="Identifier">size</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">noSideEffect</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">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Compares the memory blocks <tt class="docutils literal"><span class="pre">a</span></tt> and <tt class="docutils literal"><span class="pre">b</span></tt>. <tt class="docutils literal"><span class="pre">size</span></tt> bytes will be compared.</p>
<p>Returns:</p>
<ul class="simple"><li>a value less than zero, if <tt class="docutils literal"><span class="pre">a &lt; b</span></tt></li>
<li>a value greater than zero, if <tt class="docutils literal"><span class="pre">a &gt; b</span></tt></li>
<li>zero, if <tt class="docutils literal"><span class="pre">a == b</span></tt></li>
</ul>
<p>Like any procedure dealing with raw memory this is <strong>unsafe</strong>.</p>
</dd>
<a id="cmp,string,string"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#cmp%2Cstring%2Cstring"><span class="Identifier">cmp</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">,</span> <span class="Identifier">y</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noSideEffect</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Compare proc for strings. More efficient than the generic version.</p>
<p><strong>Note</strong>: The precise result values depend on the used C runtime library and can differ between operating systems!</p>
</dd>
<a id="cstringArrayToSeq,cstringArray,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#cstringArrayToSeq%2CcstringArray%2CNatural"><span class="Identifier">cstringArrayToSeq</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <a href="system.html#cstringArray"><span class="Identifier">cstringArray</span></a><span class="Other">;</span> <span class="Identifier">len</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
Converts a <tt class="docutils literal"><span class="pre">cstringArray</span></tt> to a <tt class="docutils literal"><span class="pre">seq[string]</span></tt>. <tt class="docutils literal"><span class="pre">a</span></tt> is supposed to be of length <tt class="docutils literal"><span class="pre">len</span></tt>.
</dd>
<a id="cstringArrayToSeq,cstringArray"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#cstringArrayToSeq%2CcstringArray"><span class="Identifier">cstringArrayToSeq</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <a href="system.html#cstringArray"><span class="Identifier">cstringArray</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
Converts a <tt class="docutils literal"><span class="pre">cstringArray</span></tt> to a <tt class="docutils literal"><span class="pre">seq[string]</span></tt>. <tt class="docutils literal"><span class="pre">a</span></tt> is supposed to be terminated by <tt class="docutils literal"><span class="pre">nil</span></tt>.
</dd>
<a id="allocCStringArray,openArray[string]"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#allocCStringArray%2CopenArray%5Bstring%5D"><span class="Identifier">allocCStringArray</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <a href="system.html#openArray"><span class="Identifier">openArray</span></a><span class="Other">[</span><a href="system.html#string"><span class="Identifier">string</span></a><span class="Other">]</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#cstringArray"><span class="Identifier">cstringArray</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
Creates a NULL terminated cstringArray from <tt class="docutils literal"><span class="pre">a</span></tt>. The result has to be freed with <tt class="docutils literal"><span class="pre">deallocCStringArray</span></tt> after it's not needed anymore.
</dd>
<a id="deallocCStringArray,cstringArray"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#deallocCStringArray%2CcstringArray"><span class="Identifier">deallocCStringArray</span></a><span class="Other">(</span><span class="Identifier">a</span><span class="Other">:</span> <a href="system.html#cstringArray"><span class="Identifier">cstringArray</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
Frees a NULL terminated cstringArray.
</dd>
<a id="setControlCHook,proc)"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#setControlCHook%2Cproc%29"><span class="Identifier">setControlCHook</span></a><span class="Other">(</span><span class="Identifier">hook</span><span class="Other">:</span> <span class="Keyword">proc</span> <span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noconv</span></span><span class="Other">.}</span></span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
Allows you to override the behaviour of your application when CTRL+C is pressed. Only one such hook is supported.
</dd>
<a id="unsetControlCHook"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#unsetControlCHook"><span class="Identifier">unsetControlCHook</span></a><span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Reverts a call to setControlCHook.
</dd>
<a id="getStackTrace"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#getStackTrace"><span class="Identifier">getStackTrace</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">gcsafe</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Gets the current stack trace. This only works for debug builds.
</dd>
<a id="getStackTrace,ref.Exception"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#getStackTrace%2Cref.Exception"><span class="Identifier">getStackTrace</span></a><span class="Other">(</span><span class="Identifier">e</span><span class="Other">:</span> <span class="Keyword">ref</span> <a href="system.html#Exception"><span class="Identifier">Exception</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#string"><span class="Identifier">string</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">gcsafe</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Gets the stack trace associated with <tt class="docutils literal"><span class="pre">e</span></tt>, which is the stack that lead to the <tt class="docutils literal"><span class="pre">raise</span></tt> statement. This only works for debug builds.
</dd>
<a id="getFrameState"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#getFrameState"><span class="Identifier">getFrameState</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">FrameState</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="setFrameState,FrameState"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#setFrameState%2CFrameState"><span class="Identifier">setFrameState</span></a><span class="Other">(</span><span class="Identifier">state</span><span class="Other">:</span> <span class="Identifier">FrameState</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="getFrame"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#getFrame"><span class="Identifier">getFrame</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#PFrame"><span class="Identifier">PFrame</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="setFrame,PFrame"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#setFrame%2CPFrame"><span class="Identifier">setFrame</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <a href="system.html#PFrame"><span class="Identifier">PFrame</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="getGcFrame"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#getGcFrame"><span class="Identifier">getGcFrame</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">GcFrame</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="popGcFrame"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#popGcFrame"><span class="Identifier">popGcFrame</span></a><span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="setGcFrame,GcFrame"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#setGcFrame%2CGcFrame"><span class="Identifier">setGcFrame</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">GcFrame</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="pushGcFrame,GcFrame"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#pushGcFrame%2CGcFrame"><span class="Identifier">pushGcFrame</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">GcFrame</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="stackTraceAvailable"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#stackTraceAvailable"><span class="Identifier">stackTraceAvailable</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="writeStackTrace"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#writeStackTrace"><span class="Identifier">writeStackTrace</span></a><span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Writes the current stack trace to <tt class="docutils literal"><span class="pre">stderr</span></tt>. This is only works for debug builds. Since it's usually used for debugging, this is proclaimed to have no IO effect!
</dd>
<a id="getStackTraceEntries,ref.Exception"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#getStackTraceEntries%2Cref.Exception"><span class="Identifier">getStackTraceEntries</span></a><span class="Other">(</span><span class="Identifier">e</span><span class="Other">:</span> <span class="Keyword">ref</span> <a href="system.html#Exception"><span class="Identifier">Exception</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="system.html#StackTraceEntry"><span class="Identifier">StackTraceEntry</span></a><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
Returns the attached stack trace to the exception <tt class="docutils literal"><span class="pre">e</span></tt> as a <tt class="docutils literal"><span class="pre">seq</span></tt>. This is not yet available for the JS backend.
</dd>
<a id="getStackTraceEntries"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#getStackTraceEntries"><span class="Identifier">getStackTraceEntries</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#seq"><span class="Identifier">seq</span></a><span class="Other">[</span><a href="system.html#StackTraceEntry"><span class="Identifier">StackTraceEntry</span></a><span class="Other">]</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
Returns the stack trace entries for the current stack trace. This is not yet available for the JS backend.
</dd>
<a id="iterToProc,typed,typedesc,untyped"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#iterToProc%2Ctyped%2Ctypedesc%2Cuntyped"><span class="Identifier">iterToProc</span></a><span class="Other">(</span><span class="Identifier">iter</span><span class="Other">:</span> <a href="system.html#typed"><span class="Identifier">typed</span></a><span class="Other">;</span> <span class="Identifier">envType</span><span class="Other">:</span> <a href="system.html#typedesc"><span class="Identifier">typedesc</span></a><span class="Other">;</span> <span class="Identifier">procName</span><span class="Other">:</span> <a href="system.html#untyped"><span class="Identifier">untyped</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
<span class="Identifier">magic</span><span class="Other">:</span> <span class="StringLit">&quot;Plugin&quot;</span><span class="Other">,</span> <span class="Identifier">compileTime</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="allocImpl,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#allocImpl%2CNatural"><span class="Identifier">allocImpl</span></a><span class="Other">(</span><span class="Identifier">size</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noconv</span><span class="Other">,</span> <span class="Identifier">gcsafe</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">gcsafe</span><span class="Other">,</span>
<span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="alloc0Impl,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#alloc0Impl%2CNatural"><span class="Identifier">alloc0Impl</span></a><span class="Other">(</span><span class="Identifier">size</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noconv</span><span class="Other">,</span> <span class="Identifier">gcsafe</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">gcsafe</span><span class="Other">,</span>
<span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="deallocImpl,pointer"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#deallocImpl%2Cpointer"><span class="Identifier">deallocImpl</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noconv</span><span class="Other">,</span> <span class="Identifier">gcsafe</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">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span>
<span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="reallocImpl,pointer,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#reallocImpl%2Cpointer%2CNatural"><span class="Identifier">reallocImpl</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">;</span> <span class="Identifier">newSize</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noconv</span><span class="Other">,</span> <span class="Identifier">gcsafe</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">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="realloc0Impl,pointer,Natural,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#realloc0Impl%2Cpointer%2CNatural%2CNatural"><span class="Identifier">realloc0Impl</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">;</span> <span class="Identifier">oldSize</span><span class="Other">,</span> <span class="Identifier">newSize</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noconv</span><span class="Other">,</span>
<span class="Identifier">gcsafe</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">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="getFreeMem"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#getFreeMem"><span class="Identifier">getFreeMem</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">gcsafe</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Returns the number of bytes that are owned by the process, but do not hold any meaningful data.
</dd>
<a id="getTotalMem"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#getTotalMem"><span class="Identifier">getTotalMem</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">gcsafe</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Returns the number of bytes that are owned by the process.
</dd>
<a id="getOccupiedMem"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#getOccupiedMem"><span class="Identifier">getOccupiedMem</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">gcsafe</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Returns the number of bytes that are owned by the process and hold data.
</dd>
<a id="getMaxMem"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#getMaxMem"><span class="Identifier">getMaxMem</span></a><span class="Other">(</span><span class="Other">)</span><span class="Other">:</span> <a href="system.html#int"><span class="Identifier">int</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="allocSharedImpl,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#allocSharedImpl%2CNatural"><span class="Identifier">allocSharedImpl</span></a><span class="Other">(</span><span class="Identifier">size</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noconv</span><span class="Other">,</span> <span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="allocShared0Impl,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#allocShared0Impl%2CNatural"><span class="Identifier">allocShared0Impl</span></a><span class="Other">(</span><span class="Identifier">size</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noconv</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span>
<span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="deallocSharedImpl,pointer"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#deallocSharedImpl%2Cpointer"><span class="Identifier">deallocSharedImpl</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noconv</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span>
<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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="reallocSharedImpl,pointer,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#reallocSharedImpl%2Cpointer%2CNatural"><span class="Identifier">reallocSharedImpl</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">;</span> <span class="Identifier">newSize</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">noconv</span><span class="Other">,</span> <span class="Identifier">gcsafe</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">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="reallocShared0Impl,pointer,Natural,Natural"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#reallocShared0Impl%2Cpointer%2CNatural%2CNatural"><span class="Identifier">reallocShared0Impl</span></a><span class="Other">(</span><span class="Identifier">p</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">;</span> <span class="Identifier">oldSize</span><span class="Other">,</span> <span class="Identifier">newSize</span><span class="Other">:</span> <a href="system.html#Natural"><span class="Identifier">Natural</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
<span class="Identifier">noconv</span><span class="Other">,</span> <span class="Identifier">gcsafe</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">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="protect,pointer"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#protect%2Cpointer"><span class="Identifier">protect</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#ForeignCell"><span class="Identifier">ForeignCell</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="dispose,ForeignCell"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#dispose%2CForeignCell"><span class="Identifier">dispose</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#ForeignCell"><span class="Identifier">ForeignCell</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="isNotForeign,ForeignCell"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#isNotForeign%2CForeignCell"><span class="Identifier">isNotForeign</span></a><span class="Other">(</span><span class="Identifier">x</span><span class="Other">:</span> <a href="system.html#ForeignCell"><span class="Identifier">ForeignCell</span></a><span class="Other">)</span><span class="Other">:</span> <a href="system.html#bool"><span class="Identifier">bool</span></a> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
returns true if 'x' belongs to the calling thread. No deep copy has to be performed then.
</dd>
<a id="setupForeignThreadGc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#setupForeignThreadGc"><span class="Identifier">setupForeignThreadGc</span></a><span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">gcsafe</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Call this if you registered a callback that will be run from a thread not under your control. This has a cheap thread-local guard, so the GC for this thread will only be initialized once per thread, no matter how often it is called.</p>
<p>This function is available only when <tt class="docutils literal"><span class="pre">--threads:on</span></tt> and <tt class="docutils literal"><span class="pre">--tlsEmulation:off</span></tt> switches are used</p>
</dd>
<a id="tearDownForeignThreadGc"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#tearDownForeignThreadGc"><span class="Identifier">tearDownForeignThreadGc</span></a><span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">gcsafe</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Call this to tear down the GC, previously initialized by <tt class="docutils literal"><span class="pre">setupForeignThreadGc</span></tt>. If GC has not been previously initialized, or has already been torn down, the call does nothing.</p>
<p>This function is available only when <tt class="docutils literal"><span class="pre">--threads:on</span></tt> and <tt class="docutils literal"><span class="pre">--tlsEmulation:off</span></tt> switches are used</p>
</dd>
<a id="nimGC_setStackBottom,pointer"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#nimGC_setStackBottom%2Cpointer"><span class="Identifier">nimGC_setStackBottom</span></a><span class="Other">(</span><span class="Identifier">theStackBottom</span><span class="Other">:</span> <a href="system.html#pointer"><span class="Identifier">pointer</span></a><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">compilerproc</span><span class="Other">,</span> <span class="Identifier">noinline</span><span class="Other">,</span>
<span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Expands operating GC stack range to <tt class="docutils literal"><span class="pre">theStackBottom</span></tt>. Does nothing if current stack bottom is already lower than <tt class="docutils literal"><span class="pre">theStackBottom</span></tt>.
</dd>
<a id="deallocHeap"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#deallocHeap"><span class="Identifier">deallocHeap</span></a><span class="Other">(</span><span class="Identifier">runFinalizers</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">;</span> <span class="Identifier">allowGcAfterwards</span> <span class="Other">=</span> <span class="Identifier">true</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma">
<span class="Identifier">raises</span><span class="Other">:</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">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Frees the thread local heap. Runs every finalizer if <tt class="docutils literal"><span class="pre">runFinalizers</span></tt> is true. If <tt class="docutils literal"><span class="pre">allowGcAfterwards</span></tt> is true, a minimal amount of allocation happens to ensure the GC can continue to work after the call to <tt class="docutils literal"><span class="pre">deallocHeap</span></tt>.
</dd>
<a id="gcInvariant"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#gcInvariant"><span class="Identifier">gcInvariant</span></a><span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="GC_collectZct"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#GC_collectZct"><span class="Identifier">GC_collectZct</span></a><span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">raises</span><span class="Other">:</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">RootEffect</span><span class="Other">]</span></span><span class="Other">.}</span></span></pre></dt>
<dd>
Collect the ZCT (zero count table). Unstable, experimental API for testing purposes. DO NOT USE!
</dd>
<a id="GC_disable"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#GC_disable"><span class="Identifier">GC_disable</span></a><span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
<p>Disables the GC. If called <tt class="docutils literal"><span class="pre">n</span></tt> times, <tt class="docutils literal"><span class="pre">n</span></tt> calls to <tt class="docutils literal"><span class="pre">GC_enable</span></tt> are needed to reactivate the GC.</p>
<p>Note that in most circumstances one should only disable the mark and sweep phase with <a class="reference external" href="#GC_disableMarkAndSweep">GC_disableMarkAndSweep</a>.</p>
</dd>
<a id="GC_enable"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#GC_enable"><span class="Identifier">GC_enable</span></a><span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">inline</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
Enables the GC again.
</dd>
<a id="GC_enableMarkAndSweep"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#GC_enableMarkAndSweep"><span class="Identifier">GC_enableMarkAndSweep</span></a><span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
</dd>
<a id="GC_disableMarkAndSweep"></a>
<dt><pre><span class="Keyword">proc</span> <a href="#GC_disableMarkAndSweep"><span class="Identifier">GC_disableMarkAndSweep</span></a><span class="Other">(</span><span class="Other">)</span> <span><span class="Other">{</span><span class="Other pragmadots">...</span><span class="Other">}</span></span><span class="pragmawrap"><span class="Other">{.</span><span class="pragma"><span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">gcsafe</span><span class="Other">,</span> <span class="Identifier">locks</span><span class="Other">:</span> <span class="DecNumber">0</span><span class="Other">,</span> <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><span class="Other">.}</span></span></pre></dt>
<dd>
The current implementation uses a refere
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment