module Rattletrap.Encode.Int64le
  ( putInt64Bits
  )
where

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

putInt64 :: Int64le -> Binary.Put
putInt64 :: Int64le -> Put
putInt64 Int64le
int64 = Int64 -> Put
Binary.putInt64le (Int64le -> Int64
int64leValue Int64le
int64)

putInt64Bits :: Int64le -> BinaryBits.BitPut ()
putInt64Bits :: Int64le -> BitPut ()
putInt64Bits Int64le
int64 = do
  let bytes :: ByteString
bytes = ByteString -> ByteString
LazyBytes.toStrict (Put -> ByteString
Binary.runPut (Int64le -> Put
putInt64 Int64le
int64))
  ByteString -> BitPut ()
BinaryBits.putByteString (ByteString -> ByteString
reverseBytes ByteString
bytes)