module Rattletrap.Encode.Int8le
  ( putInt8Bits
  )
where

import Rattletrap.Type.Int8le
import Rattletrap.Utility.Bytes

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

putInt8 :: Int8le -> Binary.Put
putInt8 :: Int8le -> Put
putInt8 Int8le
int8 = Int8 -> Put
Binary.putInt8 (Int8le -> Int8
int8leValue Int8le
int8)

putInt8Bits :: Int8le -> BinaryBits.BitPut ()
putInt8Bits :: Int8le -> BitPut ()
putInt8Bits Int8le
int8 = do
  let bytes :: ByteString
bytes = ByteString -> ByteString
LazyBytes.toStrict (Put -> ByteString
Binary.runPut (Int8le -> Put
putInt8 Int8le
int8))
  ByteString -> BitPut ()
BinaryBits.putByteString (ByteString -> ByteString
reverseBytes ByteString
bytes)