Copyright | (c) Duncan Coutts 2015-2017 |
---|---|
License | BSD3-style (see LICENSE.txt) |
Maintainer | duncan@community.haskell.org |
Stability | experimental |
Portability | non-portable (GHC extensions) |
Safe Haskell | None |
Language | Haskell2010 |
An internal module for doing magical, low-level, and unholy things in the name of efficiency.
Synopsis
- grabWord8 :: Ptr () -> Word8
- grabWord16 :: Ptr () -> Word16
- grabWord32 :: Ptr () -> Word32
- grabWord64 :: Ptr () -> Word64
- eatTailWord8 :: ByteString -> Word8
- eatTailWord16 :: ByteString -> Word16
- eatTailWord32 :: ByteString -> Word32
- eatTailWord64 :: ByteString -> Word64
- wordToFloat16 :: Word16 -> Float
- floatToWord16 :: Float -> Word16
- wordToFloat32 :: Word32 -> Float
- wordToFloat64 :: Word64 -> Double
- word8ToWord :: Word8 -> Word
- word16ToWord :: Word16 -> Word
- word32ToWord :: Word32 -> Word
- word64ToWord :: Word64 -> Word
- word8ToInt :: Word8 -> Int
- word16ToInt :: Word16 -> Int
- word32ToInt :: Word32 -> Int
- word64ToInt :: Word64 -> Maybe Int
- intToInt64 :: Int -> Int64
- nintegerFromBytes :: ByteString -> Integer
- uintegerFromBytes :: ByteString -> Integer
- data Counter s
- newCounter :: Int -> ST s (Counter s)
- readCounter :: Counter s -> ST s Int
- writeCounter :: Counter s -> Int -> ST s ()
- incCounter :: Counter s -> ST s ()
- decCounter :: Counter s -> ST s ()
- copyByteStringToByteArray :: ByteString -> ByteArray
- copyByteArrayToByteString :: ByteArray -> Int -> Int -> ByteString
Word utilities
ByteString
utilities
eatTailWord8 :: ByteString -> Word8 Source #
Take the tail of a ByteString
(i.e. drop the first byte) and read the
resulting byte(s) as an 8-bit word value. The input ByteString
MUST be at
least 2 bytes long: one byte to drop from the front, and one to read as a
Word
value. This is not checked, and failure to ensure this will result
in undefined behavior.
eatTailWord16 :: ByteString -> Word16 Source #
Take the tail of a ByteString
(i.e. drop the first byte) and read the
resulting byte(s) as a 16-bit word value. The input ByteString
MUST be at
least 3 bytes long: one byte to drop from the front, and two to read as a
16-bit Word
value. This is not checked, and failure to ensure this will
result in undefined behavior.
eatTailWord32 :: ByteString -> Word32 Source #
Take the tail of a ByteString
(i.e. drop the first byte) and read the
resulting byte(s) as a 32-bit word value. The input ByteString
MUST be at
least 5 bytes long: one byte to drop from the front, and four to read as a
32-bit Word
value. This is not checked, and failure to ensure this will
result in undefined behavior.
eatTailWord64 :: ByteString -> Word64 Source #
Take the tail of a ByteString
(i.e. drop the first byte) and read the
resulting byte(s) as a 64-bit word value. The input ByteString
MUST be at
least 9 bytes long: one byte to drop from the front, and eight to read as a
64-bit Word64
value. This is not checked, and failure to ensure this will
result in undefined behavior.
Half-floats
Float/Word conversion
Int and Word explicit conversions
word8ToWord :: Word8 -> Word Source #
word16ToWord :: Word16 -> Word Source #
word32ToWord :: Word32 -> Word Source #
word64ToWord :: Word64 -> Word Source #
word8ToInt :: Word8 -> Int Source #
word16ToInt :: Word16 -> Int Source #
word32ToInt :: Word32 -> Int Source #
intToInt64 :: Int -> Int64 Source #
Integer
utilities
nintegerFromBytes :: ByteString -> Integer Source #
Create a negative Integer
out of a raw ByteString
.
uintegerFromBytes :: ByteString -> Integer Source #
Create an Integer
out of a raw ByteString
.
Simple mutable counters
An efficient, mutable counter. Designed to be used inside
ST
or other primitive monads, hence it carries an abstract
rank-2 s
type parameter.
Array support
copyByteStringToByteArray :: ByteString -> ByteArray Source #
Copy a ByteString
and create a primitive ByteArray
from it.
copyByteArrayToByteString Source #
:: ByteArray |
|
-> Int | Offset into the |
-> Int | Length of the data to copy. |
-> ByteString |
Copy a ByteArray
at a certain offset and length into a
ByteString
.