packages feed

tools-yj-0.1.0.41: src/Foreign/C/ByteArray.hs

{-# LANGUAGE ImportQualifiedPost #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Foreign.C.ByteArray where

import Foreign.Ptr
import Foreign.C.String
import Data.Word
import Data.ByteString qualified as BS

type CByteArray = (Ptr Word8, Int)

fromCStringLen :: CStringLen -> CByteArray
fromCStringLen (p, n) = (castPtr p, n)

toCStringLen :: CByteArray -> CStringLen
toCStringLen (p, n) = (castPtr p, n)

packToByteString :: CByteArray -> IO BS.ByteString
packToByteString = BS.packCStringLen . toCStringLen

useAsFromByteString :: BS.ByteString -> (CByteArray -> IO a) -> IO a
useAsFromByteString bs f = BS.useAsCStringLen bs $ f . fromCStringLen