Warning, /frameworks/syntax-highlighting/autotests/reference/highlight.cr.ref is written in an unsupported language. File is not indexed.

0001 <Comment># This file is a testcase for the highlighting of Crystal code</Comment><br/>
0002 <Comment># It's not executable code, but a collection of code snippets</Comment><br/>
0003 <Comment>#</Comment><br/>
0004 <Normal Text></Normal Text><br/>
0005 <Kernel methods>require</Kernel methods><Normal Text> </Normal Text><String>"lib_z"</String><br/>
0006 <Kernel methods>require</Kernel methods><Normal Text> </Normal Text><String>"./digest"</String><br/>
0007 <Normal Text></Normal Text><br/>
0008 <Keyword>module</Keyword><Normal Text> </Normal Text><Constant>Digest</Constant><Operator>::</Operator><Constant>Adler32</Constant><br/>
0009 <Normal Text>  </Normal Text><Keyword>def</Keyword><Normal Text> </Normal Text><Pseudo variable>self</Pseudo variable><Message>.initial</Message><Normal Text> : </Normal Text><Constant>UInt32</Constant><br/>
0010 <Normal Text>    </Normal Text><Constant>LibZ</Constant><Message>.adler32</Message><Normal Text>(</Normal Text><Dec>0</Dec><Normal Text>, </Normal Text><Pseudo variable>nil</Pseudo variable><Normal Text>, </Normal Text><Dec>0</Dec><Normal Text>)</Normal Text><Message>.to_u32</Message><br/>
0011 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0012 <Normal Text></Normal Text><br/>
0013 <Normal Text>  </Normal Text><Keyword>def</Keyword><Normal Text> </Normal Text><Pseudo variable>self</Pseudo variable><Message>.checksum</Message><Normal Text>(data) : </Normal Text><Constant>UInt32</Constant><br/>
0014 <Normal Text>    update(data, initial)</Normal Text><br/>
0015 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0016 <Normal Text></Normal Text><br/>
0017 <Normal Text>  </Normal Text><Keyword>def</Keyword><Normal Text> </Normal Text><Pseudo variable>self</Pseudo variable><Message>.update</Message><Normal Text>(data, adler32 : </Normal Text><Constant>UInt32</Constant><Normal Text>) : </Normal Text><Constant>UInt32</Constant><br/>
0018 <Normal Text>    slice </Normal Text><Operator>=</Operator><Normal Text> data</Normal Text><Message>.to_slice</Message><br/>
0019 <Normal Text>    </Normal Text><Constant>LibZ</Constant><Message>.adler32</Message><Normal Text>(adler32, slice, slice</Normal Text><Message>.size</Message><Normal Text>)</Normal Text><Message>.to_u32</Message><br/>
0020 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0021 <Normal Text></Normal Text><br/>
0022 <Normal Text>  </Normal Text><Keyword>def</Keyword><Normal Text> </Normal Text><Pseudo variable>self</Pseudo variable><Message>.combine</Message><Normal Text>(adler1 : </Normal Text><Constant>UInt32</Constant><Normal Text>, adler2 : </Normal Text><Constant>UInt32</Constant><Normal Text>, len) : </Normal Text><Constant>UInt32</Constant><br/>
0023 <Normal Text>    </Normal Text><Constant>LibZ</Constant><Message>.adler32_combine</Message><Normal Text>(adler1, adler2, len)</Normal Text><Message>.to_u32</Message><br/>
0024 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0025 <Keyword>end</Keyword><br/>
0026 <Normal Text></Normal Text><br/>
0027 <Keyword>struct</Keyword><Normal Text> </Normal Text><Constant>BigRational</Constant><br/>
0028 <Normal Text>  </Normal Text><Constant>Number</Constant><Message>.expand_div</Message><Normal Text> </Normal Text><Delimiter>[</Delimiter><Constant>Int8</Constant><Normal Text>, </Normal Text><Constant>UInt8</Constant><Normal Text>, </Normal Text><Constant>Int16</Constant><Normal Text>, </Normal Text><Constant>UInt16</Constant><Normal Text>, </Normal Text><Constant>Int32</Constant><Normal Text>, </Normal Text><Constant>UInt32</Constant><Normal Text>, </Normal Text><Constant>Int64</Constant><Normal Text>, </Normal Text><Constant>UInt64</Constant><Normal Text>, </Normal Text><Constant>Int128</Constant><Normal Text>, </Normal Text><Constant>UInt128</Constant><Delimiter>]</Delimiter><Normal Text>, </Normal Text><Constant>BigRational</Constant><br/>
0029 <Normal Text>  </Normal Text><Constant>Number</Constant><Message>.expand_div</Message><Normal Text> </Normal Text><Delimiter>[</Delimiter><Constant>Float32</Constant><Normal Text>, </Normal Text><Constant>Float64</Constant><Delimiter>]</Delimiter><Normal Text>, </Normal Text><Constant>BigRational</Constant><br/>
0030 <Keyword>end</Keyword><br/>
0031 <Normal Text></Normal Text><br/>
0032 <Keyword>module</Keyword><Normal Text> </Normal Text><Constant>Crystal</Constant><Operator>::</Operator><Constant>Repl</Constant><Operator>::</Operator><Constant>Closure</Constant><br/>
0033 <Normal Text>  </Normal Text><Global Constant>VAR_NAME</Global Constant><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>".closure_var"</String><br/>
0034 <Normal Text>  </Normal Text><Global Constant>ARG_NAME</Global Constant><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><String>".closure_arg"</String><br/>
0035 <Keyword>end</Keyword><br/>
0036 <Normal Text></Normal Text><br/>
0037 <Keyword>class</Keyword><Normal Text> </Normal Text><Constant>FunctionType</Constant><br/>
0038 <Normal Text>  </Normal Text><Attribute Definition>getter</Attribute Definition><Normal Text> arg_types : </Normal Text><Constant>Array</Constant><Normal Text>(</Normal Text><Constant>ArgType</Constant><Normal Text>)</Normal Text><br/>
0039 <Normal Text>  </Normal Text><Attribute Definition>getter</Attribute Definition><Normal Text> return_type : </Normal Text><Constant>ArgType</Constant><br/>
0040 <Normal Text></Normal Text><br/>
0041 <Normal Text>  </Normal Text><Class Variable>@@cvar</Class Variable><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Dec>3</Dec><br/>
0042 <Normal Text>  </Normal Text><Instance Variable>@ivar</Instance Variable><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Dec>7</Dec><br/>
0043 <Normal Text></Normal Text><br/>
0044 <Normal Text>  </Normal Text><Keyword>def</Keyword><Normal Text> initialize(</Normal Text><Instance Variable>@arg_types</Instance Variable><Normal Text>, </Normal Text><Instance Variable>@return_type</Instance Variable><Normal Text>)</Normal Text><br/>
0045 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0046 <Normal Text></Normal Text><br/>
0047 <Normal Text>  </Normal Text><Keyword>def</Keyword><Normal Text> /</Normal Text><Regular Expression>/(other : Int::Unsigned) : BigInt</Regular Expression><br/>
0048 <Regular Expression>    check_division_by_zero other</Regular Expression><br/>
0049 <Regular Expression>    unsafe_floored_div(other)</Regular Expression><br/>
0050 <Regular Expression>  end</Regular Expression><br/>
0051 <Regular Expression></Regular Expression><br/>
0052 <Regular Expression>  def /</Regular Expression><Operator>/</Operator><Normal Text>(other : </Normal Text><Constant>Int</Constant><Normal Text>) : </Normal Text><Constant>BigInt</Constant><br/>
0053 <Normal Text>    check_division_by_zero other</Normal Text><br/>
0054 <Normal Text></Normal Text><br/>
0055 <Normal Text>    </Normal Text><Keyword>if</Keyword><Normal Text> other </Normal Text><Operator><</Operator><Normal Text> </Normal Text><Dec>0</Dec><br/>
0056 <Normal Text>      (</Normal Text><Operator>-</Operator><Pseudo variable>self</Pseudo variable><Normal Text>)</Normal Text><Message>.unsafe_floored_div</Message><Normal Text>(</Normal Text><Operator>-</Operator><Normal Text>other)</Normal Text><br/>
0057 <Normal Text>      </Normal Text><Instance Variable>@cvar</Instance Variable><Normal Text> </Normal Text><Operator>+=</Operator><Normal Text> </Normal Text><Dec>1</Dec><br/>
0058 <Normal Text>    </Normal Text><Keyword>else</Keyword><br/>
0059 <Normal Text>      unsafe_floored_div(other)</Normal Text><br/>
0060 <Normal Text>     </Normal Text><Instance Variable>@ivar</Instance Variable><Normal Text> </Normal Text><Operator>+=</Operator><Normal Text> </Normal Text><Dec>10</Dec><br/>
0061 <Normal Text>    </Normal Text><Keyword>end</Keyword><br/>
0062 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0063 <Keyword>end</Keyword><br/>
0064 <Normal Text></Normal Text><br/>
0065 <Kernel methods>require</Kernel methods><Normal Text> </Normal Text><String>"llvm/enums/atomic"</String><br/>
0066 <Keyword>struct</Keyword><Normal Text> </Normal Text><Constant>Atomic</Constant><Normal Text>(T)</Normal Text><br/>
0067 <Normal Text>  </Normal Text><Comment># Creates an Atomic with the given initial value.</Comment><br/>
0068 <Normal Text>  </Normal Text><Keyword>def</Keyword><Normal Text> compare_and_set(cmp : T, new : T) : </Normal Text><Operator>{</Operator><Normal Text>T, </Normal Text><Constant>Bool</Constant><Operator>}</Operator><br/>
0069 <Normal Text>    </Normal Text><Operator>{%</Operator><Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> T</Normal Text><Message>.union?</Message><Normal Text> </Normal Text><Operator>&&</Operator><Normal Text> T</Normal Text><Message>.union_types.all?</Message><Normal Text> </Normal Text><Operator>{</Operator><Normal Text> </Normal Text><Operator>|</Operator><Normal Text>t</Normal Text><Operator>|</Operator><Normal Text> t </Normal Text><Operator>==</Operator><Normal Text> </Normal Text><Constant>Nil</Constant><Normal Text> </Normal Text><Operator>||</Operator><Normal Text> t </Normal Text><Operator><</Operator><Normal Text> </Normal Text><Constant>Reference</Constant><Normal Text> </Normal Text><Operator>}</Operator><Normal Text> </Normal Text><Operator>%}</Operator><br/>
0070 <Normal Text>      address, success </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Constant>Ops</Constant><Message>.cmpxchg</Message><Normal Text>(pointerof(</Normal Text><Instance Variable>@value</Instance Variable><Normal Text>)</Normal Text><Message>.as</Message><Normal Text>(</Normal Text><Constant>LibC</Constant><Operator>::</Operator><Constant>SizeT</Constant><Operator>*</Operator><Normal Text>), </Normal Text><Constant>LibC</Constant><Operator>::</Operator><Constant>SizeT</Constant><Message>.new</Message><Normal Text>(cmp</Normal Text><Message>.as</Message><Normal Text>(T)</Normal Text><Message>.object_id</Message><Normal Text>), </Normal Text><Constant>LibC</Constant><Operator>::</Operator><Constant>SizeT</Constant><Message>.new</Message><Normal Text>(new</Normal Text><Message>.as</Message><Normal Text>(T)</Normal Text><Message>.object_id</Message><Normal Text>), </Normal Text><Symbol>:sequentially_consistent</Symbol><Normal Text>, </Normal Text><Symbol>:sequentially_consistent</Symbol><Normal Text>)</Normal Text><br/>
0071 <Normal Text>      </Normal Text><Operator>{</Operator><Normal Text>address </Normal Text><Operator>==</Operator><Normal Text> </Normal Text><Dec>0</Dec><Normal Text> ? </Normal Text><Pseudo variable>nil</Pseudo variable><Normal Text> : </Normal Text><Constant>Pointer</Constant><Normal Text>(T)</Normal Text><Message>.new</Message><Normal Text>(address)</Normal Text><Message>.as</Message><Normal Text>(T), success</Normal Text><Operator>}</Operator><br/>
0072 <Normal Text>    </Normal Text><Operator>{%</Operator><Normal Text> </Normal Text><Keyword>elsif</Keyword><Normal Text> T </Normal Text><Operator><</Operator><Normal Text> </Normal Text><Constant>Reference</Constant><Normal Text> </Normal Text><Operator>%}</Operator><br/>
0073 <Normal Text>      </Normal Text><Comment># Use addresses again (but this can't return nil)</Comment><br/>
0074 <Normal Text>      address, success </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Constant>Ops</Constant><Message>.cmpxchg</Message><Normal Text>(pointerof(</Normal Text><Instance Variable>@value</Instance Variable><Normal Text>)</Normal Text><Message>.as</Message><Normal Text>(</Normal Text><Constant>LibC</Constant><Operator>::</Operator><Constant>SizeT</Constant><Operator>*</Operator><Normal Text>), </Normal Text><Constant>LibC</Constant><Operator>::</Operator><Constant>SizeT</Constant><Message>.new</Message><Normal Text>(cmp</Normal Text><Message>.as</Message><Normal Text>(T)</Normal Text><Message>.object_id</Message><Normal Text>), </Normal Text><Constant>LibC</Constant><Operator>::</Operator><Constant>SizeT</Constant><Message>.new</Message><Normal Text>(new</Normal Text><Message>.as</Message><Normal Text>(T)</Normal Text><Message>.object_id</Message><Normal Text>), </Normal Text><Symbol>:sequentially_consistent</Symbol><Normal Text>, </Normal Text><Symbol>:sequentially_consistent</Symbol><Normal Text>)</Normal Text><br/>
0075 <Normal Text>      </Normal Text><Operator>{</Operator><Constant>Pointer</Constant><Normal Text>(T)</Normal Text><Message>.new</Message><Normal Text>(address)</Normal Text><Message>.as</Message><Normal Text>(T), success</Normal Text><Operator>}</Operator><br/>
0076 <Normal Text>    </Normal Text><Operator>{%</Operator><Normal Text> </Normal Text><Keyword>else</Keyword><Normal Text> </Normal Text><Operator>%}</Operator><br/>
0077 <Normal Text>      </Normal Text><Constant>Ops</Constant><Message>.cmpxchg</Message><Normal Text>(pointerof(</Normal Text><Instance Variable>@value</Instance Variable><Normal Text>), cmp, new, </Normal Text><Symbol>:sequentially_consistent</Symbol><Normal Text>, </Normal Text><Symbol>:sequentially_consistent</Symbol><Normal Text>)</Normal Text><br/>
0078 <Normal Text>    </Normal Text><Operator>{%</Operator><Normal Text> </Normal Text><Keyword>end</Keyword><Normal Text> </Normal Text><Operator>%}</Operator><br/>
0079 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0080 <Normal Text></Normal Text><br/>
0081 <Normal Text>  </Normal Text><Keyword>def</Keyword><Normal Text> swap(value : T)</Normal Text><br/>
0082 <Normal Text>    </Normal Text><Operator>{%</Operator><Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> T</Normal Text><Message>.union?</Message><Normal Text> </Normal Text><Operator>&&</Operator><Normal Text> T</Normal Text><Message>.union_types.all?</Message><Normal Text> </Normal Text><Operator>{</Operator><Normal Text> </Normal Text><Operator>|</Operator><Normal Text>t</Normal Text><Operator>|</Operator><Normal Text> t </Normal Text><Operator>==</Operator><Normal Text> </Normal Text><Constant>Nil</Constant><Normal Text> </Normal Text><Operator>||</Operator><Normal Text> t </Normal Text><Operator><</Operator><Normal Text> </Normal Text><Constant>Reference</Constant><Normal Text> </Normal Text><Operator>}</Operator><Normal Text> </Normal Text><Operator>||</Operator><Normal Text> T </Normal Text><Operator><</Operator><Normal Text> </Normal Text><Constant>Reference</Constant><Normal Text> </Normal Text><Operator>%}</Operator><br/>
0083 <Normal Text>      address </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Constant>Ops</Constant><Message>.atomicrmw</Message><Normal Text>(</Normal Text><Symbol>:xchg</Symbol><Normal Text>, pointerof(</Normal Text><Instance Variable>@value</Instance Variable><Normal Text>)</Normal Text><Message>.as</Message><Normal Text>(</Normal Text><Constant>LibC</Constant><Operator>::</Operator><Constant>SizeT</Constant><Operator>*</Operator><Normal Text>), </Normal Text><Constant>LibC</Constant><Operator>::</Operator><Constant>SizeT</Constant><Message>.new</Message><Normal Text>(value</Normal Text><Message>.as</Message><Normal Text>(T)</Normal Text><Message>.object_id</Message><Normal Text>), </Normal Text><Symbol>:sequentially_consistent</Symbol><Normal Text>, </Normal Text><Pseudo variable>false</Pseudo variable><Normal Text>)</Normal Text><br/>
0084 <Normal Text>      </Normal Text><Constant>Pointer</Constant><Normal Text>(T)</Normal Text><Message>.new</Message><Normal Text>(address)</Normal Text><Message>.as</Message><Normal Text>(T)</Normal Text><br/>
0085 <Normal Text>    </Normal Text><Operator>{%</Operator><Normal Text> </Normal Text><Keyword>else</Keyword><Normal Text> </Normal Text><Operator>%}</Operator><br/>
0086 <Normal Text>      </Normal Text><Constant>Ops</Constant><Message>.atomicrmw</Message><Normal Text>(</Normal Text><Symbol>:xchg</Symbol><Normal Text>, pointerof(</Normal Text><Instance Variable>@value</Instance Variable><Normal Text>), value, </Normal Text><Symbol>:sequentially_consistent</Symbol><Normal Text>, </Normal Text><Pseudo variable>false</Pseudo variable><Normal Text>)</Normal Text><br/>
0087 <Normal Text>    </Normal Text><Operator>{%</Operator><Normal Text> </Normal Text><Keyword>end</Keyword><Normal Text> </Normal Text><Operator>%}</Operator><br/>
0088 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0089 <Keyword>end</Keyword><br/>
0090 <Normal Text></Normal Text><br/>
0091 <Keyword>class</Keyword><Normal Text> </Normal Text><Constant>Deque</Constant><Normal Text>(T)</Normal Text><br/>
0092 <Normal Text>  </Normal Text><Module mixin methods>include</Module mixin methods><Normal Text> </Normal Text><Constant>Indexable</Constant><Operator>::</Operator><Constant>Mutable</Constant><Normal Text>(T)</Normal Text><br/>
0093 <Normal Text></Normal Text><br/>
0094 <Normal Text>  </Normal Text><Instance Variable>@start</Instance Variable><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Dec>0</Dec><br/>
0095 <Normal Text>  </Normal Text><Access Control>protected</Access Control><Normal Text> </Normal Text><Attribute Definition>setter</Attribute Definition><Normal Text> size</Normal Text><br/>
0096 <Normal Text>  </Normal Text><Access Control>private</Access Control><Normal Text> </Normal Text><Attribute Definition>getter</Attribute Definition><Normal Text> buffer</Normal Text><br/>
0097 <Normal Text></Normal Text><br/>
0098 <Normal Text>  </Normal Text><Keyword>def</Keyword><Normal Text> initialize(size : </Normal Text><Constant>Int</Constant><Normal Text>, value : T)</Normal Text><br/>
0099 <Normal Text>    </Normal Text><Keyword>if</Keyword><Normal Text> size </Normal Text><Operator><</Operator><Normal Text> </Normal Text><Dec>0</Dec><br/>
0100 <Normal Text>      </Normal Text><Kernel methods>raise</Kernel methods><Normal Text> </Normal Text><Constant>ArgumentError</Constant><Message>.new</Message><Normal Text>(</Normal Text><String>"Negative deque size: </String><Substitution>#{</Substitution><Normal Text>size</Normal Text><Substitution>}</Substitution><String>"</String><Normal Text>)</Normal Text><br/>
0101 <Normal Text>    </Normal Text><Keyword>end</Keyword><br/>
0102 <Normal Text>    </Normal Text><Instance Variable>@size</Instance Variable><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> size</Normal Text><Message>.to_i</Message><br/>
0103 <Normal Text>    </Normal Text><Instance Variable>@capacity</Instance Variable><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> size</Normal Text><Message>.to_i</Message><br/>
0104 <Normal Text></Normal Text><br/>
0105 <Normal Text>    </Normal Text><Keyword>unless</Keyword><Normal Text> </Normal Text><Instance Variable>@capacity</Instance Variable><Normal Text> </Normal Text><Operator>==</Operator><Normal Text> </Normal Text><Dec>0</Dec><br/>
0106 <Normal Text>      </Normal Text><Instance Variable>@buffer</Instance Variable><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Constant>Pointer</Constant><Normal Text>(T)</Normal Text><Message>.malloc</Message><Normal Text>(</Normal Text><Instance Variable>@capacity</Instance Variable><Normal Text>, value)</Normal Text><br/>
0107 <Normal Text>    </Normal Text><Keyword>end</Keyword><br/>
0108 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0109 <Normal Text></Normal Text><br/>
0110 <Normal Text>  </Normal Text><Comment># Returns a new `Deque` that has this deque's elements cloned.</Comment><br/>
0111 <Normal Text>  </Normal Text><Comment># That is, it returns a deep copy of this deque.</Comment><br/>
0112 <Normal Text>  </Normal Text><Comment>#</Comment><br/>
0113 <Normal Text>  </Normal Text><Comment># Use `#dup` if you want a shallow copy.</Comment><br/>
0114 <Normal Text>  </Normal Text><Keyword>def</Keyword><Normal Text> clone</Normal Text><br/>
0115 <Normal Text>    </Normal Text><Operator>{%</Operator><Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> T </Normal Text><Operator>==</Operator><Normal Text> </Normal Text><Operator>::</Operator><Constant>Bool</Constant><Normal Text> </Normal Text><Operator>||</Operator><Normal Text> T </Normal Text><Operator>==</Operator><Normal Text> </Normal Text><Operator>::</Operator><Constant>Char</Constant><Normal Text> </Normal Text><Operator>||</Operator><Normal Text> T </Normal Text><Operator>==</Operator><Normal Text> </Normal Text><Operator>::</Operator><Constant>String</Constant><Normal Text> </Normal Text><Operator>||</Operator><Normal Text> T </Normal Text><Operator>==</Operator><Normal Text> </Normal Text><Operator>::</Operator><Constant>Symbol</Constant><Normal Text> </Normal Text><Operator>||</Operator><Normal Text> T </Normal Text><Operator><</Operator><Normal Text> </Normal Text><Operator>::</Operator><Constant>Number</Constant><Operator>::</Operator><Constant>Primitive</Constant><Normal Text> </Normal Text><Operator>%</Operator><Delimiter>}</Delimiter><br/>
0116 <Normal Text>      </Normal Text><Constant>Deque</Constant><Normal Text>(T)</Normal Text><Message>.new</Message><Normal Text>(size) </Normal Text><Operator>{</Operator><Normal Text> </Normal Text><Operator>|</Operator><Normal Text>i</Normal Text><Operator>|</Operator><Normal Text> </Normal Text><Pseudo variable>self</Pseudo variable><Delimiter>[</Delimiter><Normal Text>i</Normal Text><Delimiter>]</Delimiter><Message>.clone.as</Message><Normal Text>(T) </Normal Text><Operator>}</Operator><br/>
0117 <Normal Text>    </Normal Text><Operator>{</Operator><Normal Text>% </Normal Text><Keyword>else</Keyword><Normal Text> %</Normal Text><Operator>}</Operator><br/>
0118 <Normal Text>      exec_recursive_clone </Normal Text><Keyword>do</Keyword><Normal Text> </Normal Text><Operator>|</Operator><Normal Text>hash</Normal Text><Operator>|</Operator><br/>
0119 <Normal Text>        clone </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Constant>Deque</Constant><Normal Text>(T)</Normal Text><Message>.new</Message><Normal Text>(size)</Normal Text><br/>
0120 <Normal Text>        each </Normal Text><Keyword>do</Keyword><Normal Text> </Normal Text><Operator>|</Operator><Normal Text>element</Normal Text><Operator>|</Operator><br/>
0121 <Normal Text>          clone </Normal Text><Operator><<</Operator><Normal Text> element</Normal Text><Message>.clone</Message><br/>
0122 <Normal Text>        </Normal Text><Keyword>end</Keyword><br/>
0123 <Normal Text>        clone</Normal Text><br/>
0124 <Normal Text>      </Normal Text><Keyword>end</Keyword><br/>
0125 <Normal Text>    </Normal Text><Operator>{</Operator><Normal Text>% </Normal Text><Keyword>end</Keyword><Normal Text> %</Normal Text><Operator>}</Operator><br/>
0126 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0127 <Normal Text></Normal Text><br/>
0128 <Normal Text>  </Normal Text><Keyword>def</Keyword><Normal Text> delete_at(index : </Normal Text><Constant>Int</Constant><Normal Text>) : T</Normal Text><br/>
0129 <Normal Text>    </Normal Text><Keyword>unless</Keyword><Normal Text> </Normal Text><Dec>0</Dec><Normal Text> </Normal Text><Operator><=</Operator><Normal Text> index </Normal Text><Operator><</Operator><Normal Text> @size</Normal Text><br/>
0130 <Normal Text>      raise </Normal Text><Constant>IndexError</Constant><Message>.new</Message><br/>
0131 <Normal Text>    </Normal Text><Keyword>end</Keyword><br/>
0132 <Normal Text>    </Normal Text><Keyword>return</Keyword><Normal Text> shift </Normal Text><Keyword>if</Keyword><Normal Text> index </Normal Text><Operator>==</Operator><Normal Text> </Normal Text><Dec>0</Dec><br/>
0133 <Normal Text></Normal Text><br/>
0134 <Normal Text>    </Normal Text><Keyword>if</Keyword><Normal Text> index </Normal Text><Operator>></Operator><Normal Text> @size </Normal Text><Operator>//</Operator><Normal Text> </Normal Text><Dec>2</Dec><br/>
0135 <Normal Text>      </Normal Text><Comment># Move following items to the left, starting with the first one</Comment><br/>
0136 <Normal Text>      </Normal Text><Comment># [56-01234] -> [6x-01235]</Comment><br/>
0137 <Normal Text>      dst </Normal Text><Operator>=</Operator><Normal Text> rindex</Normal Text><br/>
0138 <Normal Text>      finish </Normal Text><Operator>=</Operator><Normal Text> (@start </Normal Text><Operator>+</Operator><Normal Text> @size </Normal Text><Operator>-</Operator><Normal Text> </Normal Text><Dec>1</Dec><Normal Text>) </Normal Text><Operator>%</Operator><Normal Text> @capacity</Normal Text><br/>
0139 <Normal Text>      loop </Normal Text><Keyword>do</Keyword><br/>
0140 <Normal Text>        src </Normal Text><Operator>=</Operator><Normal Text> dst </Normal Text><Operator>+</Operator><Normal Text> </Normal Text><Dec>1</Dec><br/>
0141 <Normal Text>        src </Normal Text><Operator>-=</Operator><Normal Text> @capacity </Normal Text><Keyword>if</Keyword><Normal Text> src </Normal Text><Operator>>=</Operator><Normal Text> @capacity</Normal Text><br/>
0142 <Normal Text>        @buffer</Normal Text><Delimiter>[</Delimiter><Normal Text>dst</Normal Text><Delimiter>]</Delimiter><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> @buffer</Normal Text><Delimiter>[</Delimiter><Normal Text>src</Normal Text><Delimiter>]</Delimiter><br/>
0143 <Normal Text>        </Normal Text><Keyword>break</Keyword><Normal Text> </Normal Text><Keyword>if</Keyword><Normal Text> src </Normal Text><Operator>==</Operator><Normal Text> finish</Normal Text><br/>
0144 <Normal Text>        dst </Normal Text><Operator>=</Operator><Normal Text> src</Normal Text><br/>
0145 <Normal Text>      </Normal Text><Keyword>end</Keyword><br/>
0146 <Normal Text>      (@buffer </Normal Text><Operator>+</Operator><Normal Text> finish)</Normal Text><Message>.clear</Message><br/>
0147 <Normal Text>    </Normal Text><Keyword>end</Keyword><br/>
0148 <Normal Text></Normal Text><br/>
0149 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0150 <Normal Text></Normal Text><br/>
0151 <Normal Text>  </Normal Text><Keyword>def</Keyword><Normal Text> each(</Normal Text><Operator>& : </Operator><Normal Text>T </Normal Text><Operator>-></Operator><Normal Text>) : </Normal Text><Constant>Nil</Constant><br/>
0152 <Normal Text>    halfs </Normal Text><Keyword>do</Keyword><Normal Text> </Normal Text><Operator>|</Operator><Normal Text>r</Normal Text><Operator>|</Operator><br/>
0153 <Normal Text>      r</Normal Text><Message>.each</Message><Normal Text> </Normal Text><Keyword>do</Keyword><Normal Text> </Normal Text><Operator>|</Operator><Normal Text>i</Normal Text><Operator>|</Operator><br/>
0154 <Normal Text>        </Normal Text><Keyword>yield</Keyword><Normal Text> @buffer</Normal Text><Delimiter>[</Delimiter><Normal Text>i</Normal Text><Delimiter>]</Delimiter><br/>
0155 <Normal Text>      </Normal Text><Keyword>end</Keyword><br/>
0156 <Normal Text>    </Normal Text><Keyword>end</Keyword><br/>
0157 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0158 <Normal Text></Normal Text><br/>
0159 <Normal Text>  </Normal Text><Keyword>def</Keyword><Normal Text> pop : T</Normal Text><br/>
0160 <Normal Text>    pop </Normal Text><Operator>{</Operator><Normal Text> </Normal Text><Kernel methods>raise</Kernel methods><Normal Text> </Normal Text><Constant>IndexError</Constant><Message>.new</Message><Normal Text> </Normal Text><Operator>}</Operator><br/>
0161 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0162 <Normal Text></Normal Text><br/>
0163 <Normal Text></Normal Text><br/>
0164 <Normal Text>  </Normal Text><Definition>macro</Definition><Normal Text> </Normal Text><Delimiter>[]</Delimiter><Normal Text>(</Normal Text><Operator>*</Operator><Normal Text>args)</Normal Text><br/>
0165 <Normal Text>    array </Normal Text><Operator>=</Operator><Normal Text> uninitialized </Normal Text><Constant>Array</Constant><Normal Text>(</Normal Text><Constant>Int32</Constant><Normal Text>)</Normal Text><br/>
0166 <Normal Text>    </Normal Text><Operator>{</Operator><Normal Text>% </Normal Text><Keyword>for</Keyword><Normal Text> arg, i </Normal Text><Keyword>in</Keyword><Normal Text> args %</Normal Text><Operator>}</Operator><br/>
0167 <Normal Text>      array</Normal Text><Message>.to_unsafe</Message><Delimiter>[</Delimiter><Operator>{{</Operator><Normal Text>i</Normal Text><Operator>}}</Operator><Delimiter>]</Delimiter><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Operator>{{</Operator><Normal Text>arg</Normal Text><Operator>}}</Operator><br/>
0168 <Normal Text>    </Normal Text><Operator>{</Operator><Normal Text>% </Normal Text><Keyword>end</Keyword><Normal Text> %</Normal Text><Operator>}</Operator><br/>
0169 <Normal Text>    array</Normal Text><br/>
0170 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0171 <Normal Text></Normal Text><br/>
0172 <Normal Text>    </Normal Text><Keyword>def</Keyword><Normal Text> message : </Normal Text><Constant>String</Constant><br/>
0173 <Normal Text>        </Normal Text><Keyword>case</Keyword><Normal Text> </Normal Text><Pseudo variable>self</Pseudo variable><br/>
0174 <Normal Text>        </Normal Text><Keyword>when</Keyword><Normal Text> </Normal Text><Global Constant>SUCCESS</Global Constant><Normal Text>        </Normal Text><Keyword>then</Keyword><Normal Text> </Normal Text><String>"No error occurred. System call completed successfully."</String><br/>
0175 <Normal Text>        </Normal Text><Keyword>when</Keyword><Normal Text> </Normal Text><Global Constant>TXTBSY</Global Constant><Normal Text>         </Normal Text><Keyword>then</Keyword><Normal Text> </Normal Text><Constant>Errno</Constant><Operator>::</Operator><Constant Value>ETXTBSY</Constant Value><br/>
0176 <Normal Text>        </Normal Text><Keyword>when</Keyword><Normal Text> </Normal Text><Global Constant>NOTCAPABLE</Global Constant><Normal Text>     </Normal Text><Keyword>then</Keyword><Normal Text> </Normal Text><Constant>Errno</Constant><Operator>::</Operator><Constant Value>ENOTCAPABLE</Constant Value><br/>
0177 <Normal Text>        </Normal Text><Keyword>else</Keyword><Normal Text>                     </Normal Text><Constant>Errno</Constant><Operator>::</Operator><Constant Value>EINVAL</Constant Value><br/>
0178 <Normal Text>        </Normal Text><Keyword>end</Keyword><br/>
0179 <Normal Text>    </Normal Text><Keyword>end</Keyword><br/>
0180 <Normal Text></Normal Text><br/>
0181 <Normal Text>    enum </Normal Text><Constant>Signal</Constant><br/>
0182 <Normal Text>        </Normal Text><Global Constant>KILL</Global Constant><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Dec>0</Dec><br/>
0183 <Normal Text>        </Normal Text><Global Constant>BILL</Global Constant><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Dec>101</Dec><br/>
0184 <Normal Text>    </Normal Text><Keyword>end</Keyword><br/>
0185 <Normal Text></Normal Text><br/>
0186 <Keyword>end</Keyword><br/>
0187 <Normal Text></Normal Text><br/>
0188 <Normal Text></Normal Text><br/>
0189 <Normal Text>  </Normal Text><Comment># :nodoc:</Comment><br/>
0190 <Definition>module</Definition><Normal Text> </Normal Text><Constant>Ops</Constant><br/>
0191 <Normal Text>    </Normal Text><Comment># Defines methods that directly map to LLVM instructions related to atomic operations.</Comment><br/>
0192 <Normal Text></Normal Text><br/>
0193 <Normal Text>    @</Normal Text><Delimiter>[</Delimiter><Constant>Primitive</Constant><Normal Text>(</Normal Text><Symbol>:cmpxchg</Symbol><Normal Text>)</Normal Text><Delimiter>]</Delimiter><br/>
0194 <Normal Text>    </Normal Text><Keyword>def</Keyword><Normal Text> </Normal Text><Pseudo variable>self</Pseudo variable><Message>.cmpxchg</Message><Normal Text>(ptr : T</Normal Text><Operator>*</Operator><Normal Text>, cmp : T, new : T, success_ordering : </Normal Text><Global Constant>LLVM</Global Constant><Operator>::</Operator><Constant>AtomicOrdering</Constant><Normal Text>, failure_ordering : </Normal Text><Global Constant>LLVM</Global Constant><Operator>::</Operator><Constant>AtomicOrdering</Constant><Normal Text>) : </Normal Text><Operator>{</Operator><Normal Text>T, </Normal Text><Constant>Bool</Constant><Operator>}</Operator><Normal Text> forall T</Normal Text><br/>
0195 <Normal Text>    </Normal Text><Keyword>end</Keyword><br/>
0196 <Normal Text></Normal Text><br/>
0197 <Normal Text>    @</Normal Text><Delimiter>[</Delimiter><Constant>Primitive</Constant><Normal Text>(</Normal Text><Symbol>:atomicrmw</Symbol><Normal Text>)</Normal Text><Delimiter>]</Delimiter><br/>
0198 <Normal Text>    </Normal Text><Keyword>def</Keyword><Normal Text> </Normal Text><Pseudo variable>self</Pseudo variable><Message>.atomicrmw</Message><Normal Text>(op : </Normal Text><Global Constant>LLVM</Global Constant><Operator>::</Operator><Constant>AtomicRMWBinOp</Constant><Normal Text>, ptr : T</Normal Text><Operator>*</Operator><Normal Text>, val : T, ordering : </Normal Text><Global Constant>LLVM</Global Constant><Operator>::</Operator><Constant>AtomicOrdering</Constant><Normal Text>, singlethread : </Normal Text><Constant>Bool</Constant><Normal Text>) : T forall T</Normal Text><br/>
0199 <Normal Text>    </Normal Text><Keyword>end</Keyword><br/>
0200 <Keyword>end</Keyword><br/>
0201 <Normal Text></Normal Text><br/>
0202 <Normal Text></Normal Text><br/>
0203 <Normal Text>@</Normal Text><Delimiter>[</Delimiter><Constant>Link</Constant><Normal Text>(</Normal Text><String>"z"</String><Normal Text>)</Normal Text><Delimiter>]</Delimiter><br/>
0204 <Normal Text>lib </Normal Text><Constant>LibZ</Constant><br/>
0205 <Normal Text>  </Normal Text><Definition>alias</Definition><Normal Text> </Normal Text><Constant>Char</Constant><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Constant>LibC</Constant><Operator>::</Operator><Constant>Char</Constant><br/>
0206 <Normal Text>  </Normal Text><Definition>alias</Definition><Normal Text> </Normal Text><Constant>SizeT</Constant><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Constant>LibC</Constant><Operator>::</Operator><Constant>SizeT</Constant><br/>
0207 <Normal Text></Normal Text><br/>
0208 <Normal Text>  fun zlibVersion : </Normal Text><Constant>Char</Constant><Operator>*</Operator><br/>
0209 <Normal Text>  fun crc32_combine(crc1 : </Normal Text><Constant>ULong</Constant><Normal Text>, crc2 : </Normal Text><Constant>ULong</Constant><Normal Text>, len : </Normal Text><Constant>Long</Constant><Normal Text>) : </Normal Text><Constant>ULong</Constant><br/>
0210 <Normal Text></Normal Text><br/>
0211 <Normal Text>  </Normal Text><Definition>alias</Definition><Normal Text> </Normal Text><Constant>AllocFunc</Constant><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Constant>Void</Constant><Operator>*</Operator><Normal Text>, </Normal Text><Constant>UInt</Constant><Normal Text>, </Normal Text><Constant>UInt</Constant><Normal Text> </Normal Text><Operator>-></Operator><Normal Text> </Normal Text><Constant>Void</Constant><Operator>*</Operator><br/>
0212 <Normal Text>  </Normal Text><Definition>alias</Definition><Normal Text> </Normal Text><Constant>FreeFunc</Constant><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> (</Normal Text><Constant>Void</Constant><Operator>*</Operator><Normal Text>, </Normal Text><Constant>Void</Constant><Operator>*</Operator><Normal Text>) </Normal Text><Operator>-></Operator><br/>
0213 <Normal Text></Normal Text><br/>
0214 <Normal Text>  </Normal Text><Definition>struct</Definition><Normal Text> </Normal Text><Constant>ZStream</Constant><br/>
0215 <Normal Text>    next_in : </Normal Text><Constant>Bytef</Constant><Operator>*</Operator><br/>
0216 <Normal Text>    avail_in : </Normal Text><Constant>UInt</Constant><br/>
0217 <Normal Text>    next_out : </Normal Text><Constant>Bytef</Constant><Operator>*</Operator><br/>
0218 <Normal Text>    total_out : </Normal Text><Constant>ULong</Constant><br/>
0219 <Normal Text>    msg : </Normal Text><Constant>Char</Constant><Operator>*</Operator><br/>
0220 <Normal Text>    state : </Normal Text><Constant>Void</Constant><Operator>*</Operator><br/>
0221 <Normal Text>    zalloc : </Normal Text><Constant>AllocFunc</Constant><br/>
0222 <Normal Text>    zfree : </Normal Text><Constant>FreeFunc</Constant><br/>
0223 <Normal Text>    opaque : </Normal Text><Constant>Void</Constant><Operator>*</Operator><br/>
0224 <Normal Text>    data_type : </Normal Text><Constant>Int</Constant><br/>
0225 <Normal Text>    adler : </Normal Text><Constant>Long</Constant><br/>
0226 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0227 <Normal Text></Normal Text><br/>
0228 <Normal Text>  </Normal Text><Comment># error codes</Comment><br/>
0229 <Normal Text>  enum </Normal Text><Constant>Error</Constant><br/>
0230 <Normal Text>    </Normal Text><Global Constant>OK</Global Constant><Normal Text>            </Normal Text><Operator>=</Operator><Normal Text>  </Normal Text><Dec>0</Dec><br/>
0231 <Normal Text>    </Normal Text><Global Constant>VERSION_ERROR</Global Constant><Normal Text> </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Operator>-</Operator><Dec>6</Dec><br/>
0232 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0233 <Normal Text></Normal Text><br/>
0234 <Normal Text>  enum </Normal Text><Constant>Flush</Constant><br/>
0235 <Normal Text>    </Normal Text><Global Constant>NO_FLUSH</Global Constant><Normal Text>      </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Dec>0</Dec><br/>
0236 <Normal Text>    </Normal Text><Global Constant>TREES</Global Constant><Normal Text>         </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Dec>6</Dec><br/>
0237 <Normal Text>  </Normal Text><Keyword>end</Keyword><br/>
0238 <Normal Text></Normal Text><br/>
0239 <Normal Text>  </Normal Text><Global Constant>MAX_BITS</Global Constant><Normal Text>      </Normal Text><Operator>=</Operator><Normal Text> </Normal Text><Dec>15</Dec><br/>
0240 <Normal Text></Normal Text><br/>
0241 <Normal Text>  fun deflateInit2 </Normal Text><Operator>=</Operator><Normal Text> deflateInit2_(stream : </Normal Text><Constant>ZStream</Constant><Operator>*</Operator><Normal Text>, level : </Normal Text><Constant>Int32</Constant><Normal Text>, method : </Normal Text><Constant>Int32</Constant><Normal Text>,</Normal Text><br/>
0242 <Normal Text>                                   window_bits : </Normal Text><Constant>Int32</Constant><Normal Text>, mem_level : </Normal Text><Constant>Int32</Constant><Normal Text>, strategy : </Normal Text><Constant>Int32</Constant><Normal Text>,</Normal Text><br/>
0243 <Normal Text>                                   version : </Normal Text><Constant>UInt8</Constant><Operator>*</Operator><Normal Text>, stream_size : </Normal Text><Constant>Int32</Constant><Normal Text>) : </Normal Text><Constant>Error</Constant><br/>
0244 <Normal Text>  fun deflate(stream : </Normal Text><Constant>ZStream</Constant><Operator>*</Operator><Normal Text>, flush : </Normal Text><Constant>Flush</Constant><Normal Text>) : </Normal Text><Constant>Error</Constant><br/>
0245 <Normal Text>  fun deflateSetDictionary(stream : </Normal Text><Constant>ZStream</Constant><Operator>*</Operator><Normal Text>, dictionary : </Normal Text><Constant>UInt8</Constant><Operator>*</Operator><Normal Text>, len : </Normal Text><Constant>UInt</Constant><Normal Text>) : </Normal Text><Constant>Int</Constant><br/>
0246 <Normal Text></Normal Text><br/>
0247 <Normal Text>  fun inflateInit2 </Normal Text><Operator>=</Operator><Normal Text> inflateInit2_(stream : </Normal Text><Constant>ZStream</Constant><Operator>*</Operator><Normal Text>, window_bits : </Normal Text><Constant>Int32</Constant><Normal Text>, version : </Normal Text><Constant>UInt8</Constant><Operator>*</Operator><Normal Text>, stream_size : </Normal Text><Constant>Int32</Constant><Normal Text>) : </Normal Text><Constant>Error</Constant><br/>
0248 <Normal Text>  fun inflate(stream : </Normal Text><Constant>ZStream</Constant><Operator>*</Operator><Normal Text>, flush : </Normal Text><Constant>Flush</Constant><Normal Text>) : </Normal Text><Constant>Error</Constant><br/>
0249 <Normal Text>  fun inflateSetDictionary(stream : </Normal Text><Constant>ZStream</Constant><Operator>*</Operator><Normal Text>, dictionary : </Normal Text><Constant>UInt8</Constant><Operator>*</Operator><Normal Text>, len : </Normal Text><Constant>UInt</Constant><Normal Text>) : </Normal Text><Constant>Error</Constant><br/>
0250 <Keyword>end</Keyword><br/>