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