| bytestring-0.9.0.1: Fast, packed, strict and lazy byte arrays with a list interface | Contents | Index |
|
Data.ByteString.Internal | Portability | portable | Stability | experimental | Maintainer | dons@cse.unsw.edu.au |
|
|
|
|
|
Description |
A module containing semi-public ByteString internals. This exposes
the ByteString representation and low level construction functions.
Modules which extend the ByteString system will need to use this module
while ideally most users will be able to make do with the public interface
modules.
|
|
Synopsis |
|
|
|
|
The ByteString type and representation
|
|
data ByteString |
A space-efficient representation of a Word8 vector, supporting many
efficient operations. A ByteString contains 8-bit characters only.
Instances of Eq, Ord, Read, Show, Data, Typeable
| Constructors | PS !(ForeignPtr Word8) !Int !Int | |
| Instances | |
|
|
Low level introduction and elimination
|
|
create :: Int -> (Ptr Word8 -> IO ()) -> IO ByteString |
Create ByteString of size l and use action f to fill it's contents.
|
|
createAndTrim :: Int -> (Ptr Word8 -> IO Int) -> IO ByteString |
Given the maximum size needed and a function to make the contents
of a ByteString, createAndTrim makes the ByteString. The generating
function is required to return the actual final size (<= the maximum
size), and the resulting byte array is realloced to this size.
createAndTrim is the main mechanism for creating custom, efficient
ByteString functions, using Haskell or C functions to fill the space.
|
|
createAndTrim' :: Int -> (Ptr Word8 -> IO (Int, Int, a)) -> IO (ByteString, a) |
|
unsafeCreate :: Int -> (Ptr Word8 -> IO ()) -> ByteString |
A way of creating ByteStrings outside the IO monad. The Int
argument gives the final size of the ByteString. Unlike
createAndTrim the ByteString is not reallocated if the final size
is less than the estimated size.
|
|
mallocByteString :: Int -> IO (ForeignPtr a) |
Wrapper of mallocForeignPtrBytes with faster implementation
for GHC 6.5 builds newer than 060606
|
|
Conversion to and from ForeignPtrs
|
|
fromForeignPtr :: ForeignPtr Word8 -> Int -> Int -> ByteString |
O(1) Build a ByteString from a ForeignPtr
|
|
toForeignPtr :: ByteString -> (ForeignPtr Word8, Int, Int) |
O(1) Deconstruct a ForeignPtr from a ByteString
|
|
Utilities
|
|
inlinePerformIO :: IO a -> a |
Just like unsafePerformIO, but we inline it. Big performance gains as
it exposes lots of things to further inlining. Very unsafe. In
particular, you should do no memory allocation inside an
inlinePerformIO block. On Hugs this is just unsafePerformIO.
|
|
nullForeignPtr :: ForeignPtr Word8 |
|
countOccurrences :: (Storable a, Num a) => Ptr a -> Ptr Word8 -> Int -> IO () |
Count the number of occurrences of each byte.
|
|
Standard C Functions
|
|
c_strlen :: CString -> IO CSize |
|
c_free_finalizer :: FunPtr (Ptr Word8 -> IO ()) |
|
memchr :: Ptr Word8 -> Word8 -> CSize -> IO (Ptr Word8) |
|
memcmp :: Ptr Word8 -> Ptr Word8 -> CSize -> IO CInt |
|
memcpy :: Ptr Word8 -> Ptr Word8 -> CSize -> IO () |
|
memmove :: Ptr Word8 -> Ptr Word8 -> CSize -> IO () |
|
memset :: Ptr Word8 -> Word8 -> CSize -> IO (Ptr Word8) |
|
cbits functions
|
|
c_reverse :: Ptr Word8 -> Ptr Word8 -> CULong -> IO () |
|
c_intersperse :: Ptr Word8 -> Ptr Word8 -> CULong -> Word8 -> IO () |
|
c_maximum :: Ptr Word8 -> CULong -> IO Word8 |
|
c_minimum :: Ptr Word8 -> CULong -> IO Word8 |
|
c_count :: Ptr Word8 -> CULong -> Word8 -> IO CULong |
|
Internal GHC magic
|
|
memcpy_ptr_baoff :: Ptr a -> RawBuffer -> CInt -> CSize -> IO (Ptr ()) |
|
Chars
|
|
w2c :: Word8 -> Char |
Conversion between Word8 and Char. Should compile to a no-op.
|
|
c2w :: Char -> Word8 |
Unsafe conversion between Char and Word8. This is a no-op and
silently truncates to 8 bits Chars > '\255'. It is provided as
convenience for ByteString construction.
|
|
isSpaceWord8 :: Word8 -> Bool |
|
Produced by Haddock version 0.8 |