module Rattletrap.Decode.CompressedWordVector
  ( decodeCompressedWordVectorBits
  )
where

import Rattletrap.Decode.Common
import Rattletrap.Decode.CompressedWord
import Rattletrap.Type.CompressedWordVector

decodeCompressedWordVectorBits :: DecodeBits CompressedWordVector
decodeCompressedWordVectorBits :: DecodeBits CompressedWordVector
decodeCompressedWordVectorBits =
  CompressedWord
-> CompressedWord -> CompressedWord -> CompressedWordVector
CompressedWordVector
    (CompressedWord
 -> CompressedWord -> CompressedWord -> CompressedWordVector)
-> BitGet CompressedWord
-> BitGet
     (CompressedWord -> CompressedWord -> CompressedWordVector)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Word -> BitGet CompressedWord
decodeCompressedWordBits Word
limit
    BitGet (CompressedWord -> CompressedWord -> CompressedWordVector)
-> BitGet CompressedWord
-> BitGet (CompressedWord -> CompressedWordVector)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Word -> BitGet CompressedWord
decodeCompressedWordBits Word
limit
    BitGet (CompressedWord -> CompressedWordVector)
-> BitGet CompressedWord -> DecodeBits CompressedWordVector
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
<*> Word -> BitGet CompressedWord
decodeCompressedWordBits Word
limit

limit :: Word
limit :: Word
limit = Word
65536