module Rattletrap.Encode.Int32le
  ( putInt32
  , putInt32Bits
  )
where

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

putInt32 :: Int32le -> Binary.Put
putInt32 :: Int32le -> Put
putInt32 Int32le
int32 = Int32 -> Put
Binary.putInt32le (Int32le -> Int32
int32leValue Int32le
int32)

putInt32Bits :: Int32le -> BinaryBits.BitPut ()
putInt32Bits :: Int32le -> BitPut ()
putInt32Bits Int32le
int32 = do
  let bytes :: ByteString
bytes = ByteString -> ByteString
LazyBytes.toStrict (Put -> ByteString
Binary.runPut (Int32le -> Put
putInt32 Int32le
int32))
  ByteString -> BitPut ()
BinaryBits.putByteString (ByteString -> ByteString
reverseBytes ByteString
bytes)