packages feed

bitwise-0.1: hugs98/Compat.hs

module Compat
  ( unsafeIOToST
  , uncons
  , packCStringLen
  , unsafeUseAsCStringLen
  ) where

import Control.Monad.ST (unsafeIOToST)
import qualified Data.ByteString as BS
import Data.Word (Word8)
import Foreign.C.String (CStringLen)

uncons :: BS.ByteString -> Maybe (Word8, BS.ByteString)
uncons s = if BS.null s then Nothing else Just (BS.head s, BS.tail s)

unsafeUseAsCStringLen :: BS.ByteString -> (CStringLen -> IO a) -> IO a
unsafeUseAsCStringLen = BS.useAsCStringLen

packCStringLen :: CStringLen -> IO BS.ByteString
packCStringLen = return . BS.packCStringLen