MicroHs-0.15.0.0: lib/Data/ByteString/Builder/Extra.hs
module Data.ByteString.Builder.Extra where
import qualified Prelude ()
import MiniPrelude
import Control.Monad.ST
import Data.ByteString.Builder
import Data.ByteString.Builder.Internal
import Data.Double
import Data.Float
import Data.Int
import Data.Word
import Foreign.Storable
import Mhs.MutUArr
import Mhs.UArr
flush :: Builder
flush = Builder id
host :: (Storable a) => a -> Builder
host x = runST $ do
arr <- newMutSTUArr 1
unsafeWriteMutSTUArr arr 0 x
UArr bs <- unsafeFreezeMutSTUArr arr
pure (byteString bs)
intHost :: Int -> Builder
intHost = host
int16Host :: Int16 -> Builder
int16Host = host
int32Host :: Int32 -> Builder
int32Host = host
int64Host :: Int64 -> Builder
int64Host = host
wordHost :: Word -> Builder
wordHost = host
word16Host :: Word16 -> Builder
word16Host = host
word32Host :: Word32 -> Builder
word32Host = host
word64Host :: Word64 -> Builder
word64Host = host
floatHost :: Float -> Builder
floatHost = host
doubleHost :: Double -> Builder
doubleHost = host