Copyright | © 2022 Julian Ospald |
---|---|
License | MIT |
Maintainer | Julian Ospald <hasufell@posteo.de> |
Stability | experimental |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
Internal low-level utilities mostly for Word16
,
such as byte-array operations and other stuff not meant to be exported from Word16 module.
Synopsis
- _nul :: Word16
- isSpace :: Word16 -> Bool
- word16ToChar :: Word16 -> Char
- create :: Int -> (forall s. MBA s -> ST s ()) -> ShortByteString
- asBA :: ShortByteString -> BA
- data BA = BA# ByteArray#
- data MBA s = MBA# (MutableByteArray# s)
- newPinnedByteArray :: Int -> ST s (MBA s)
- newByteArray :: Int -> ST s (MBA s)
- copyByteArray :: BA -> Int -> MBA s -> Int -> Int -> ST s ()
- unsafeFreezeByteArray :: MBA s -> ST s BA
- copyAddrToByteArray :: Ptr a -> MBA RealWorld -> Int -> Int -> ST RealWorld ()
- packCWString :: Ptr Word16 -> IO ShortByteString
- packCWStringLen :: (Ptr Word16, Int) -> IO ShortByteString
- useAsCWString :: ShortByteString -> (Ptr Word16 -> IO a) -> IO a
- useAsCWStringLen :: ShortByteString -> ((Ptr Word16, Int) -> IO a) -> IO a
- newCWString :: ShortByteString -> IO (Ptr Word16)
- moduleErrorIO :: String -> String -> IO a
- moduleErrorMsg :: String -> String -> String
- packWord16 :: [Word16] -> ShortByteString
- packLenWord16 :: Int -> [Word16] -> ShortByteString
- unpackWord16 :: ShortByteString -> [Word16]
- packWord16Rev :: [Word16] -> ShortByteString
- packLenWord16Rev :: Int -> [Word16] -> ShortByteString
- writeWord16Array :: MBA s -> Int -> Word16 -> ST s ()
- indexWord8Array :: BA -> Int -> Word8
- indexWord16Array :: BA -> Int -> Word16
- word16ToLE# :: Word16# -> Word16#
- word16FromLE# :: Word16# -> Word16#
- setByteArray :: MBA s -> Int -> Int -> Int -> ST s ()
- copyMutableByteArray :: MBA s -> Int -> MBA s -> Int -> Int -> ST s ()
- createAndTrim :: Int -> (forall s. MBA s -> ST s (Int, a)) -> (ShortByteString, a)
- createAndTrim' :: Int -> (forall s. MBA s -> ST s Int) -> ShortByteString
- createAndTrim'' :: Int -> (forall s. MBA s -> MBA s -> ST s (Int, Int)) -> (ShortByteString, ShortByteString)
- findIndexOrLength :: (Word16 -> Bool) -> ShortByteString -> Int
- findFromEndUntil :: (Word16 -> Bool) -> ShortByteString -> Int
- assertEven :: ShortByteString -> ShortByteString
- errorEmptySBS :: HasCallStack => String -> a
- moduleError :: HasCallStack => String -> String -> a
- compareByteArraysOff :: BA -> Int -> BA -> Int -> Int -> Int
Documentation
word16ToChar :: Word16 -> Char Source #
Total conversion to char.
asBA :: ShortByteString -> BA Source #
packCWString :: Ptr Word16 -> IO ShortByteString Source #
O(n). Construct a new ShortByteString
from a CWString
. The
resulting ShortByteString
is an immutable copy of the original
CWString
, and is managed on the Haskell heap. The original
CWString
must be null terminated.
Since: 0.10.10.0
packCWStringLen :: (Ptr Word16, Int) -> IO ShortByteString Source #
O(n). Construct a new ShortByteString
from a CWStringLen
. The
resulting ShortByteString
is an immutable copy of the original CWStringLen
.
The ShortByteString
is a normal Haskell value and will be managed on the
Haskell heap.
Since: 0.10.10.0
useAsCWString :: ShortByteString -> (Ptr Word16 -> IO a) -> IO a Source #
O(n) construction. Use a ShortByteString
with a function requiring a
null-terminated CWString
. The CWString
is a copy and will be freed
automatically; it must not be stored or used after the
subcomputation finishes.
Since: 0.10.10.0
useAsCWStringLen :: ShortByteString -> ((Ptr Word16, Int) -> IO a) -> IO a Source #
O(n) construction. Use a ShortByteString
with a function requiring a CWStringLen
.
As for useAsCWString
this function makes a copy of the original ShortByteString
.
It must not be stored or used after the subcomputation finishes.
Since: 0.10.10.0
newCWString :: ShortByteString -> IO (Ptr Word16) Source #
O(n) construction. Use a ShortByteString
with a function requiring a CWStringLen
.
As for useAsCWString
this function makes a copy of the original ShortByteString
.
It must not be stored or used after the subcomputation finishes.
Since: 0.10.10.0
packWord16 :: [Word16] -> ShortByteString Source #
packLenWord16 :: Int -> [Word16] -> ShortByteString Source #
unpackWord16 :: ShortByteString -> [Word16] Source #
packWord16Rev :: [Word16] -> ShortByteString Source #
packLenWord16Rev :: Int -> [Word16] -> ShortByteString Source #
Encode Word16 as little-endian.
Decode Word16 from little-endian.
word16ToLE# :: Word16# -> Word16# Source #
word16FromLE# :: Word16# -> Word16# Source #
createAndTrim :: Int -> (forall s. MBA s -> ST s (Int, a)) -> (ShortByteString, a) Source #
Given the maximum size needed and a function to make the contents
of a ShortByteString, createAndTrim makes the ShortByteString
.
The generating function is required to return the actual final size
(<= the maximum size) and the result value. The resulting byte array
is realloced to this size.
createAndTrim' :: Int -> (forall s. MBA s -> ST s Int) -> ShortByteString Source #
createAndTrim'' :: Int -> (forall s. MBA s -> MBA s -> ST s (Int, Int)) -> (ShortByteString, ShortByteString) Source #
findIndexOrLength :: (Word16 -> Bool) -> ShortByteString -> Int Source #
findFromEndUntil :: (Word16 -> Bool) -> ShortByteString -> Int Source #
Returns the length of the substring matching, not the index. If no match, returns 0.
errorEmptySBS :: HasCallStack => String -> a Source #
moduleError :: HasCallStack => String -> String -> a Source #