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))