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