packages feed

inline-asm-0.4.0.0: src/Language/Asm/Inline/Util.hs

module Language.Asm.Inline.Util where

import qualified Data.ByteString as BS
import qualified Data.ByteString.Internal as BS
import Foreign.ForeignPtr
import Foreign.ForeignPtr.Unsafe
import Foreign.Ptr
import GHC.Word

getBSAddr :: BS.ByteString -> Ptr Word8
getBSAddr bs = unsafeForeignPtrToPtr ptr `plusPtr` offset
  where
    (ptr, offset, _) = BS.toForeignPtr bs

withBS :: BS.ByteString -> IO a -> IO a
withBS str action = withForeignPtr ptr $ const action
  where
    (ptr, _, _) = BS.toForeignPtr str