rattletrap-2.2.2: library/Rattletrap/Primitive/Int8.hs
module Rattletrap.Primitive.Int8 where
import Rattletrap.Utility
import qualified Data.Binary.Bits.Get as BinaryBit
import qualified Data.Binary.Bits.Put as BinaryBit
import qualified Data.Binary.Get as Binary
import qualified Data.Binary.Put as Binary
import qualified Data.ByteString.Lazy as ByteString
import qualified Data.Int as Int
newtype Int8 = Int8
{ int8Value :: Int.Int8
} deriving (Eq, Ord, Show)
getInt8 :: Binary.Get Int8
getInt8 = do
int8 <- Binary.getInt8
pure (Int8 int8)
putInt8 :: Int8 -> Binary.Put
putInt8 int8 = Binary.putInt8 (int8Value int8)
getInt8Bits :: BinaryBit.BitGet Int8
getInt8Bits = do
bytes <- BinaryBit.getLazyByteString 1
pure (Binary.runGet getInt8 (reverseBytes bytes))
putInt8Bits :: Int8 -> BinaryBit.BitPut ()
putInt8Bits int8 = do
let bytes = Binary.runPut (putInt8 int8)
BinaryBit.putByteString (ByteString.toStrict (reverseBytes bytes))