module Rattletrap.Type.Attribute.QWord where import qualified Rattletrap.BitGet as BitGet import qualified Rattletrap.BitPut as BitPut import qualified Rattletrap.Schema as Schema import qualified Rattletrap.Type.U64 as U64 import qualified Rattletrap.Utility.Json as Json newtype QWord = QWord { QWord -> U64 value :: U64.U64 } deriving (QWord -> QWord -> Bool (QWord -> QWord -> Bool) -> (QWord -> QWord -> Bool) -> Eq QWord forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: QWord -> QWord -> Bool $c/= :: QWord -> QWord -> Bool == :: QWord -> QWord -> Bool $c== :: QWord -> QWord -> Bool Eq, Int -> QWord -> ShowS [QWord] -> ShowS QWord -> String (Int -> QWord -> ShowS) -> (QWord -> String) -> ([QWord] -> ShowS) -> Show QWord forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [QWord] -> ShowS $cshowList :: [QWord] -> ShowS show :: QWord -> String $cshow :: QWord -> String showsPrec :: Int -> QWord -> ShowS $cshowsPrec :: Int -> QWord -> ShowS Show) instance Json.FromJSON QWord where parseJSON :: Value -> Parser QWord parseJSON = (U64 -> QWord) -> Parser U64 -> Parser QWord forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap U64 -> QWord QWord (Parser U64 -> Parser QWord) -> (Value -> Parser U64) -> Value -> Parser QWord forall b c a. (b -> c) -> (a -> b) -> a -> c . Value -> Parser U64 forall a. FromJSON a => Value -> Parser a Json.parseJSON instance Json.ToJSON QWord where toJSON :: QWord -> Value toJSON = U64 -> Value forall a. ToJSON a => a -> Value Json.toJSON (U64 -> Value) -> (QWord -> U64) -> QWord -> Value forall b c a. (b -> c) -> (a -> b) -> a -> c . QWord -> U64 value schema :: Schema.Schema schema :: Schema schema = String -> Value -> Schema Schema.named String "attribute-q-word" (Value -> Schema) -> Value -> Schema forall a b. (a -> b) -> a -> b $ Schema -> Value Schema.ref Schema U64.schema bitPut :: QWord -> BitPut.BitPut bitPut :: QWord -> BitPut bitPut QWord qWordAttribute = U64 -> BitPut U64.bitPut (QWord -> U64 value QWord qWordAttribute) bitGet :: BitGet.BitGet QWord bitGet :: BitGet QWord bitGet = String -> BitGet QWord -> BitGet QWord forall a. String -> BitGet a -> BitGet a BitGet.label String "QWord" (BitGet QWord -> BitGet QWord) -> BitGet QWord -> BitGet QWord forall a b. (a -> b) -> a -> b $ do U64 value <- String -> BitGet U64 -> BitGet U64 forall a. String -> BitGet a -> BitGet a BitGet.label String "value" BitGet U64 U64.bitGet QWord -> BitGet QWord forall (f :: * -> *) a. Applicative f => a -> f a pure QWord :: U64 -> QWord QWord { U64 value :: U64 value :: U64 value }