module Rattletrap.Encode.Word8le
  ( putWord8
  , putWord8Bits
  )
where

import Rattletrap.Type.Word8le
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

putWord8 :: Word8le -> Binary.Put
putWord8 :: Word8le -> Put
putWord8 Word8le
word8 = Word8 -> Put
Binary.putWord8 (Word8le -> Word8
word8leValue Word8le
word8)

putWord8Bits :: Word8le -> BinaryBits.BitPut ()
putWord8Bits :: Word8le -> BitPut ()
putWord8Bits Word8le
word8 = do
  let bytes :: ByteString
bytes = ByteString -> ByteString
LazyBytes.toStrict (Put -> ByteString
Binary.runPut (Word8le -> Put
putWord8 Word8le
word8))
  ByteString -> BitPut ()
BinaryBits.putByteString (ByteString -> ByteString
reverseBytes ByteString
bytes)