{-# language DataKinds #-}
{-# language MagicHash #-}
{-# language UnboxedTuples #-}
module Basics.Word
(
T
, T#
, R
, lift
, unlift
, plus
, minus
, plus#
, minus#
, times#
, quot#
, rem#
, gt#
, lt#
, gte#
, lte#
, eq#
, neq#
, readByteArray#
, writeByteArray#
, indexByteArray#
, shrink#
, signed
, size
) where
import GHC.Exts
import qualified GHC.Exts as Exts
import qualified Foreign.Storable as FS
type T = Word
type T# = Word#
type R = 'WordRep
size :: Int
size :: Int
size = forall a. Storable a => a -> Int
FS.sizeOf (forall a. HasCallStack => a
undefined :: Word)
signed :: Bool
signed :: Bool
signed = Bool
False
lift :: T# -> T
lift :: T# -> Word
lift = T# -> Word
W#
unlift :: T -> T#
unlift :: Word -> T#
unlift (W# T#
i) = T#
i
plus :: T -> T -> T
plus :: Word -> Word -> Word
plus (W# T#
x) (W# T#
y) = T# -> Word
W# (T# -> T# -> T#
plusWord# T#
x T#
y)
minus :: T -> T -> T
minus :: Word -> Word -> Word
minus (W# T#
x) (W# T#
y) = T# -> Word
W# (T# -> T# -> T#
minusWord# T#
x T#
y)
times# :: T# -> T# -> T#
times# :: T# -> T# -> T#
times# = T# -> T# -> T#
timesWord#
quot# :: T# -> T# -> T#
quot# :: T# -> T# -> T#
quot# = T# -> T# -> T#
quotWord#
rem# :: T# -> T# -> T#
rem# :: T# -> T# -> T#
rem# = T# -> T# -> T#
remWord#
plus# :: T# -> T# -> T#
plus# :: T# -> T# -> T#
plus# = T# -> T# -> T#
plusWord#
minus# :: T# -> T# -> T#
minus# :: T# -> T# -> T#
minus# = T# -> T# -> T#
minusWord#
gt# :: T# -> T# -> Int#
gt# :: T# -> T# -> Int#
gt# = T# -> T# -> Int#
gtWord#
lt# :: T# -> T# -> Int#
lt# :: T# -> T# -> Int#
lt# = T# -> T# -> Int#
ltWord#
gte# :: T# -> T# -> Int#
gte# :: T# -> T# -> Int#
gte# = T# -> T# -> Int#
geWord#
lte# :: T# -> T# -> Int#
lte# :: T# -> T# -> Int#
lte# = T# -> T# -> Int#
leWord#
eq# :: T# -> T# -> Int#
eq# :: T# -> T# -> Int#
eq# = T# -> T# -> Int#
eqWord#
neq# :: T# -> T# -> Int#
neq# :: T# -> T# -> Int#
neq# = T# -> T# -> Int#
neWord#
indexByteArray# :: ByteArray# -> Int# -> T#
indexByteArray# :: ByteArray# -> Int# -> T#
indexByteArray# = ByteArray# -> Int# -> T#
indexWordArray#
readByteArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, T# #)
readByteArray# :: forall s.
MutableByteArray# s -> Int# -> State# s -> (# State# s, T# #)
readByteArray# = forall s.
MutableByteArray# s -> Int# -> State# s -> (# State# s, T# #)
readWordArray#
writeByteArray# :: MutableByteArray# s -> Int# -> T# -> State# s -> State# s
writeByteArray# :: forall s. MutableByteArray# s -> Int# -> T# -> State# s -> State# s
writeByteArray# = forall s. MutableByteArray# s -> Int# -> T# -> State# s -> State# s
writeWordArray#
shrink# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, MutableByteArray# s #)
shrink# :: forall s.
MutableByteArray# s
-> Int# -> State# s -> (# State# s, MutableByteArray# s #)
shrink# MutableByteArray# s
m Int#
i State# s
s0 = (# forall d. MutableByteArray# d -> Int# -> State# d -> State# d
Exts.shrinkMutableByteArray# MutableByteArray# s
m (Int#
i Int# -> Int# -> Int#
*# (case Int
size of I# Int#
sz -> Int#
sz)) State# s
s0, MutableByteArray# s
m #)