This file is indexed.

/usr/share/doc/libghc-text-doc/html/src/Data-Text-Unsafe.html is in libghc-text-doc 1.2.2.1-3.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<!-- Generated by HsColour, http://code.haskell.org/~malcolm/hscolour/ -->
<title>Data/Text/Unsafe.hs</title>
<link type='text/css' rel='stylesheet' href='hscolour.css' />
</head>
<body>
<pre><a name="line-1"></a><span class='hs-comment'>{-# LANGUAGE CPP, MagicHash, UnboxedTuples #-}</span>
<a name="line-2"></a><span class='hs-comment'>-- |</span>
<a name="line-3"></a><span class='hs-comment'>-- Module      : Data.Text.Unsafe</span>
<a name="line-4"></a><span class='hs-comment'>-- Copyright   : (c) 2009, 2010, 2011 Bryan O'Sullivan</span>
<a name="line-5"></a><span class='hs-comment'>-- License     : BSD-style</span>
<a name="line-6"></a><span class='hs-comment'>-- Maintainer  : bos@serpentine.com</span>
<a name="line-7"></a><span class='hs-comment'>-- Stability   : experimental</span>
<a name="line-8"></a><span class='hs-comment'>-- Portability : portable</span>
<a name="line-9"></a><span class='hs-comment'>--</span>
<a name="line-10"></a><span class='hs-comment'>-- A module containing unsafe 'Text' operations, for very very careful</span>
<a name="line-11"></a><span class='hs-comment'>-- use in heavily tested code.</span>
<a name="line-12"></a><span class='hs-keyword'>module</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Unsafe</span>
<a name="line-13"></a>    <span class='hs-layout'>(</span>
<a name="line-14"></a>      <span class='hs-varid'>inlineInterleaveST</span>
<a name="line-15"></a>    <span class='hs-layout'>,</span> <span class='hs-varid'>inlinePerformIO</span>
<a name="line-16"></a>    <span class='hs-layout'>,</span> <span class='hs-varid'>unsafeDupablePerformIO</span>
<a name="line-17"></a>    <span class='hs-layout'>,</span> <span class='hs-conid'>Iter</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span>
<a name="line-18"></a>    <span class='hs-layout'>,</span> <span class='hs-varid'>iter</span>
<a name="line-19"></a>    <span class='hs-layout'>,</span> <span class='hs-varid'>iter_</span>
<a name="line-20"></a>    <span class='hs-layout'>,</span> <span class='hs-varid'>reverseIter</span>
<a name="line-21"></a>    <span class='hs-layout'>,</span> <span class='hs-varid'>reverseIter_</span>
<a name="line-22"></a>    <span class='hs-layout'>,</span> <span class='hs-varid'>unsafeHead</span>
<a name="line-23"></a>    <span class='hs-layout'>,</span> <span class='hs-varid'>unsafeTail</span>
<a name="line-24"></a>    <span class='hs-layout'>,</span> <span class='hs-varid'>lengthWord16</span>
<a name="line-25"></a>    <span class='hs-layout'>,</span> <span class='hs-varid'>takeWord16</span>
<a name="line-26"></a>    <span class='hs-layout'>,</span> <span class='hs-varid'>dropWord16</span>
<a name="line-27"></a>    <span class='hs-layout'>)</span> <span class='hs-keyword'>where</span>
<a name="line-28"></a>
<a name="line-29"></a><span class='hs-cpp'>#if defined(ASSERTS)</span>
<a name="line-30"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Control</span><span class='hs-varop'>.</span><span class='hs-conid'>Exception</span> <span class='hs-layout'>(</span><span class='hs-varid'>assert</span><span class='hs-layout'>)</span>
<a name="line-31"></a><span class='hs-cpp'>#endif</span>
<a name="line-32"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>Encoding</span><span class='hs-varop'>.</span><span class='hs-conid'>Utf16</span> <span class='hs-layout'>(</span><span class='hs-varid'>chr2</span><span class='hs-layout'>)</span>
<a name="line-33"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span><span class='hs-layout'>(</span><span class='hs-keyglyph'>..</span><span class='hs-layout'>)</span><span class='hs-layout'>)</span>
<a name="line-34"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>Unsafe</span> <span class='hs-layout'>(</span><span class='hs-varid'>inlineInterleaveST</span><span class='hs-layout'>,</span> <span class='hs-varid'>inlinePerformIO</span><span class='hs-layout'>)</span>
<a name="line-35"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Internal</span><span class='hs-varop'>.</span><span class='hs-conid'>Unsafe</span><span class='hs-varop'>.</span><span class='hs-conid'>Char</span> <span class='hs-layout'>(</span><span class='hs-varid'>unsafeChr</span><span class='hs-layout'>)</span>
<a name="line-36"></a><span class='hs-keyword'>import</span> <span class='hs-keyword'>qualified</span> <span class='hs-conid'>Data</span><span class='hs-varop'>.</span><span class='hs-conid'>Text</span><span class='hs-varop'>.</span><span class='hs-conid'>Array</span> <span class='hs-keyword'>as</span> <span class='hs-conid'>A</span>
<a name="line-37"></a><span class='hs-keyword'>import</span> <span class='hs-conid'>GHC</span><span class='hs-varop'>.</span><span class='hs-conid'>IO</span> <span class='hs-layout'>(</span><span class='hs-varid'>unsafeDupablePerformIO</span><span class='hs-layout'>)</span>
<a name="line-38"></a>
<a name="line-39"></a><a name="unsafeHead"></a><span class='hs-comment'>-- | /O(1)/ A variant of 'head' for non-empty 'Text'. 'unsafeHead'</span>
<a name="line-40"></a><span class='hs-comment'>-- omits the check for the empty case, so there is an obligation on</span>
<a name="line-41"></a><span class='hs-comment'>-- the programmer to provide a proof that the 'Text' is non-empty.</span>
<a name="line-42"></a><span class='hs-definition'>unsafeHead</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Char</span>
<a name="line-43"></a><span class='hs-definition'>unsafeHead</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>off</span> <span class='hs-sel'>_len</span><span class='hs-layout'>)</span>
<a name="line-44"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&lt;</span> <span class='hs-num'>0xD800</span> <span class='hs-varop'>||</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;</span> <span class='hs-num'>0xDBFF</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>unsafeChr</span> <span class='hs-varid'>m</span>
<a name="line-45"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span>                <span class='hs-keyglyph'>=</span> <span class='hs-varid'>chr2</span> <span class='hs-varid'>m</span> <span class='hs-varid'>n</span>
<a name="line-46"></a>    <span class='hs-keyword'>where</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>A</span><span class='hs-varop'>.</span><span class='hs-varid'>unsafeIndex</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>off</span>
<a name="line-47"></a>          <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>A</span><span class='hs-varop'>.</span><span class='hs-varid'>unsafeIndex</span> <span class='hs-varid'>arr</span> <span class='hs-layout'>(</span><span class='hs-varid'>off</span><span class='hs-varop'>+</span><span class='hs-num'>1</span><span class='hs-layout'>)</span>
<a name="line-48"></a><span class='hs-comment'>{-# INLINE unsafeHead #-}</span>
<a name="line-49"></a>
<a name="line-50"></a><a name="unsafeTail"></a><span class='hs-comment'>-- | /O(1)/ A variant of 'tail' for non-empty 'Text'. 'unsafeTail'</span>
<a name="line-51"></a><span class='hs-comment'>-- omits the check for the empty case, so there is an obligation on</span>
<a name="line-52"></a><span class='hs-comment'>-- the programmer to provide a proof that the 'Text' is non-empty.</span>
<a name="line-53"></a><span class='hs-definition'>unsafeTail</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Text</span>
<a name="line-54"></a><span class='hs-definition'>unsafeTail</span> <span class='hs-varid'>t</span><span class='hs-keyglyph'>@</span><span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>off</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span>
<a name="line-55"></a><span class='hs-cpp'>#if defined(ASSERTS)</span>
<a name="line-56"></a>    <span class='hs-varid'>assert</span> <span class='hs-layout'>(</span><span class='hs-varid'>d</span> <span class='hs-varop'>&lt;=</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span> <span class='hs-varop'>$</span>
<a name="line-57"></a><span class='hs-cpp'>#endif</span>
<a name="line-58"></a>    <span class='hs-conid'>Text</span> <span class='hs-varid'>arr</span> <span class='hs-layout'>(</span><span class='hs-varid'>off</span><span class='hs-varop'>+</span><span class='hs-varid'>d</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>len</span><span class='hs-comment'>-</span><span class='hs-varid'>d</span><span class='hs-layout'>)</span>
<a name="line-59"></a>  <span class='hs-keyword'>where</span> <span class='hs-varid'>d</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>iter_</span> <span class='hs-varid'>t</span> <span class='hs-num'>0</span>
<a name="line-60"></a><span class='hs-comment'>{-# INLINE unsafeTail #-}</span>
<a name="line-61"></a>
<a name="line-62"></a><a name="Iter"></a><span class='hs-keyword'>data</span> <span class='hs-conid'>Iter</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Iter</span> <span class='hs-comment'>{-# UNPACK #-}</span> <span class='hs-varop'>!</span><span class='hs-conid'>Char</span> <span class='hs-comment'>{-# UNPACK #-}</span> <span class='hs-varop'>!</span><span class='hs-conid'>Int</span>
<a name="line-63"></a>
<a name="line-64"></a><a name="iter"></a><span class='hs-comment'>-- | /O(1)/ Iterate (unsafely) one step forwards through a UTF-16</span>
<a name="line-65"></a><span class='hs-comment'>-- array, returning the current character and the delta to add to give</span>
<a name="line-66"></a><span class='hs-comment'>-- the next offset to iterate at.</span>
<a name="line-67"></a><span class='hs-definition'>iter</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Iter</span>
<a name="line-68"></a><span class='hs-definition'>iter</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>off</span> <span class='hs-sel'>_len</span><span class='hs-layout'>)</span> <span class='hs-varid'>i</span>
<a name="line-69"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&lt;</span> <span class='hs-num'>0xD800</span> <span class='hs-varop'>||</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;</span> <span class='hs-num'>0xDBFF</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Iter</span> <span class='hs-layout'>(</span><span class='hs-varid'>unsafeChr</span> <span class='hs-varid'>m</span><span class='hs-layout'>)</span> <span class='hs-num'>1</span>
<a name="line-70"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span>                <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Iter</span> <span class='hs-layout'>(</span><span class='hs-varid'>chr2</span> <span class='hs-varid'>m</span> <span class='hs-varid'>n</span><span class='hs-layout'>)</span> <span class='hs-num'>2</span>
<a name="line-71"></a>  <span class='hs-keyword'>where</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>A</span><span class='hs-varop'>.</span><span class='hs-varid'>unsafeIndex</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>j</span>
<a name="line-72"></a>        <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>A</span><span class='hs-varop'>.</span><span class='hs-varid'>unsafeIndex</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>k</span>
<a name="line-73"></a>        <span class='hs-varid'>j</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>off</span> <span class='hs-varop'>+</span> <span class='hs-varid'>i</span>
<a name="line-74"></a>        <span class='hs-varid'>k</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>j</span> <span class='hs-varop'>+</span> <span class='hs-num'>1</span>
<a name="line-75"></a><span class='hs-comment'>{-# INLINE iter #-}</span>
<a name="line-76"></a>
<a name="line-77"></a><a name="iter_"></a><span class='hs-comment'>-- | /O(1)/ Iterate one step through a UTF-16 array, returning the</span>
<a name="line-78"></a><span class='hs-comment'>-- delta to add to give the next offset to iterate at.</span>
<a name="line-79"></a><span class='hs-definition'>iter_</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span>
<a name="line-80"></a><span class='hs-definition'>iter_</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>off</span> <span class='hs-sel'>_len</span><span class='hs-layout'>)</span> <span class='hs-varid'>i</span> <span class='hs-keyglyph'>|</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&lt;</span> <span class='hs-num'>0xD800</span> <span class='hs-varop'>||</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;</span> <span class='hs-num'>0xDBFF</span> <span class='hs-keyglyph'>=</span> <span class='hs-num'>1</span>
<a name="line-81"></a>                            <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span>                <span class='hs-keyglyph'>=</span> <span class='hs-num'>2</span>
<a name="line-82"></a>  <span class='hs-keyword'>where</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>A</span><span class='hs-varop'>.</span><span class='hs-varid'>unsafeIndex</span> <span class='hs-varid'>arr</span> <span class='hs-layout'>(</span><span class='hs-varid'>off</span><span class='hs-varop'>+</span><span class='hs-varid'>i</span><span class='hs-layout'>)</span>
<a name="line-83"></a><span class='hs-comment'>{-# INLINE iter_ #-}</span>
<a name="line-84"></a>
<a name="line-85"></a><a name="reverseIter"></a><span class='hs-comment'>-- | /O(1)/ Iterate one step backwards through a UTF-16 array,</span>
<a name="line-86"></a><span class='hs-comment'>-- returning the current character and the delta to add (i.e. a</span>
<a name="line-87"></a><span class='hs-comment'>-- negative number) to give the next offset to iterate at.</span>
<a name="line-88"></a><span class='hs-definition'>reverseIter</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-layout'>(</span><span class='hs-conid'>Char</span><span class='hs-layout'>,</span><span class='hs-conid'>Int</span><span class='hs-layout'>)</span>
<a name="line-89"></a><span class='hs-definition'>reverseIter</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>off</span> <span class='hs-sel'>_len</span><span class='hs-layout'>)</span> <span class='hs-varid'>i</span>
<a name="line-90"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&lt;</span> <span class='hs-num'>0xDC00</span> <span class='hs-varop'>||</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;</span> <span class='hs-num'>0xDFFF</span> <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-varid'>unsafeChr</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span> <span class='hs-comment'>-</span><span class='hs-num'>1</span><span class='hs-layout'>)</span>
<a name="line-91"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span>                <span class='hs-keyglyph'>=</span> <span class='hs-layout'>(</span><span class='hs-varid'>chr2</span> <span class='hs-varid'>n</span> <span class='hs-varid'>m</span><span class='hs-layout'>,</span>    <span class='hs-comment'>-</span><span class='hs-num'>2</span><span class='hs-layout'>)</span>
<a name="line-92"></a>  <span class='hs-keyword'>where</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>A</span><span class='hs-varop'>.</span><span class='hs-varid'>unsafeIndex</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>j</span>
<a name="line-93"></a>        <span class='hs-varid'>n</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>A</span><span class='hs-varop'>.</span><span class='hs-varid'>unsafeIndex</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>k</span>
<a name="line-94"></a>        <span class='hs-varid'>j</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>off</span> <span class='hs-varop'>+</span> <span class='hs-varid'>i</span>
<a name="line-95"></a>        <span class='hs-varid'>k</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>j</span> <span class='hs-comment'>-</span> <span class='hs-num'>1</span>
<a name="line-96"></a><span class='hs-comment'>{-# INLINE reverseIter #-}</span>
<a name="line-97"></a>
<a name="line-98"></a><a name="reverseIter_"></a><span class='hs-comment'>-- | /O(1)/ Iterate one step backwards through a UTF-16 array,</span>
<a name="line-99"></a><span class='hs-comment'>-- returning the delta to add (i.e. a negative number) to give the</span>
<a name="line-100"></a><span class='hs-comment'>-- next offset to iterate at.</span>
<a name="line-101"></a><span class='hs-definition'>reverseIter_</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span>
<a name="line-102"></a><span class='hs-definition'>reverseIter_</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>off</span> <span class='hs-sel'>_len</span><span class='hs-layout'>)</span> <span class='hs-varid'>i</span>
<a name="line-103"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&lt;</span> <span class='hs-num'>0xDC00</span> <span class='hs-varop'>||</span> <span class='hs-varid'>m</span> <span class='hs-varop'>&gt;</span> <span class='hs-num'>0xDFFF</span> <span class='hs-keyglyph'>=</span> <span class='hs-comment'>-</span><span class='hs-num'>1</span>
<a name="line-104"></a>    <span class='hs-keyglyph'>|</span> <span class='hs-varid'>otherwise</span>                <span class='hs-keyglyph'>=</span> <span class='hs-comment'>-</span><span class='hs-num'>2</span>
<a name="line-105"></a>  <span class='hs-keyword'>where</span> <span class='hs-varid'>m</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>A</span><span class='hs-varop'>.</span><span class='hs-varid'>unsafeIndex</span> <span class='hs-varid'>arr</span> <span class='hs-layout'>(</span><span class='hs-varid'>off</span><span class='hs-varop'>+</span><span class='hs-varid'>i</span><span class='hs-layout'>)</span>
<a name="line-106"></a><span class='hs-comment'>{-# INLINE reverseIter_ #-}</span>
<a name="line-107"></a>
<a name="line-108"></a><a name="lengthWord16"></a><span class='hs-comment'>-- | /O(1)/ Return the length of a 'Text' in units of 'Word16'.  This</span>
<a name="line-109"></a><span class='hs-comment'>-- is useful for sizing a target array appropriately before using</span>
<a name="line-110"></a><span class='hs-comment'>-- 'unsafeCopyToPtr'.</span>
<a name="line-111"></a><span class='hs-definition'>lengthWord16</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Int</span>
<a name="line-112"></a><span class='hs-definition'>lengthWord16</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-sel'>_arr</span> <span class='hs-sel'>_off</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-varid'>len</span>
<a name="line-113"></a><span class='hs-comment'>{-# INLINE lengthWord16 #-}</span>
<a name="line-114"></a>
<a name="line-115"></a><a name="takeWord16"></a><span class='hs-comment'>-- | /O(1)/ Unchecked take of 'k' 'Word16's from the front of a 'Text'.</span>
<a name="line-116"></a><span class='hs-definition'>takeWord16</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Text</span>
<a name="line-117"></a><span class='hs-definition'>takeWord16</span> <span class='hs-varid'>k</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>off</span> <span class='hs-sel'>_len</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Text</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>off</span> <span class='hs-varid'>k</span>
<a name="line-118"></a><span class='hs-comment'>{-# INLINE takeWord16 #-}</span>
<a name="line-119"></a>
<a name="line-120"></a><a name="dropWord16"></a><span class='hs-comment'>-- | /O(1)/ Unchecked drop of 'k' 'Word16's from the front of a 'Text'.</span>
<a name="line-121"></a><span class='hs-definition'>dropWord16</span> <span class='hs-keyglyph'>::</span> <span class='hs-conid'>Int</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Text</span> <span class='hs-keyglyph'>-&gt;</span> <span class='hs-conid'>Text</span>
<a name="line-122"></a><span class='hs-definition'>dropWord16</span> <span class='hs-varid'>k</span> <span class='hs-layout'>(</span><span class='hs-conid'>Text</span> <span class='hs-varid'>arr</span> <span class='hs-varid'>off</span> <span class='hs-varid'>len</span><span class='hs-layout'>)</span> <span class='hs-keyglyph'>=</span> <span class='hs-conid'>Text</span> <span class='hs-varid'>arr</span> <span class='hs-layout'>(</span><span class='hs-varid'>off</span><span class='hs-varop'>+</span><span class='hs-varid'>k</span><span class='hs-layout'>)</span> <span class='hs-layout'>(</span><span class='hs-varid'>len</span><span class='hs-comment'>-</span><span class='hs-varid'>k</span><span class='hs-layout'>)</span>
<a name="line-123"></a><span class='hs-comment'>{-# INLINE dropWord16 #-}</span>
</pre></body>
</html>