module Rattletrap.Encode.Word64le
  ( putWord64
  , putWord64Bits
  )
where

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

putWord64 :: Word64le -> Binary.Put
putWord64 :: Word64le -> Put
putWord64 Word64le
word64 = Word64 -> Put
Binary.putWord64le (Word64le -> Word64
word64leValue Word64le
word64)

putWord64Bits :: Word64le -> BinaryBits.BitPut ()
putWord64Bits :: Word64le -> BitPut ()
putWord64Bits Word64le
word64 = do
  let bytes :: ByteString
bytes = ByteString -> ByteString
LazyBytes.toStrict (Put -> ByteString
Binary.runPut (Word64le -> Put
putWord64 Word64le
word64))
  ByteString -> BitPut ()
BinaryBits.putByteString (ByteString -> ByteString
reverseBytes ByteString
bytes)