module Rattletrap.Encode.Word32le
  ( putWord32
  , putWord32Bits
  )
where

import Rattletrap.Type.Word32le
import Rattletrap.Utility.Bytes

import qualified Data.Binary as Binary
import qualified Data.Binary.Bits.Put as BinaryBits
import qualified Data.Binary.Put as Binary
import qualified Data.ByteString.Lazy as LazyBytes

putWord32 :: Word32le -> Binary.Put
putWord32 :: Word32le -> Put
putWord32 Word32le
word32 = Word32 -> Put
Binary.putWord32le (Word32le -> Word32
word32leValue Word32le
word32)

putWord32Bits :: Word32le -> BinaryBits.BitPut ()
putWord32Bits :: Word32le -> BitPut ()
putWord32Bits Word32le
word32 = do
  let bytes :: ByteString
bytes = ByteString -> ByteString
LazyBytes.toStrict (Put -> ByteString
Binary.runPut (Word32le -> Put
putWord32 Word32le
word32))
  ByteString -> BitPut ()
BinaryBits.putByteString (ByteString -> ByteString
reverseBytes ByteString
bytes)