module Halbum.Buffer where import Foreign.Ptr import qualified Data.ByteString.Lazy as L import qualified Data.ByteString as P type Buffer = P.ByteString bsToBuffer :: L.ByteString -> Buffer bsToBuffer (L.LPS xs) = P.concat xs getBufferSize :: Buffer -> Int getBufferSize = P.length bufferIsEmpty :: Buffer -> Bool bufferIsEmpty = (==0) . getBufferSize -- | Warning: modifying the pointed-to data modifies the buffer. withBufferPtr :: Buffer -> ((Ptr a,Int) -> IO b) -> IO b withBufferPtr b f = P.unsafeUseAsCStringLen b (\ (p,l) -> f (castPtr p, l)) writeBufferFile :: FilePath -> Buffer -> IO () writeBufferFile = P.writeFile