{-# LANGUAGE GeneralizedNewtypeDeriving, DeriveDataTypeable, OverloadedStrings #-} module Data.Bond.Schema.Modifier where import qualified Data.Bond.Internal.Imports as B' import qualified Prelude as P' newtype Modifier = Modifier B'.Int32 deriving (P'.Show, P'.Eq, B'.NFData, P'.Ord, P'.Enum, B'.Hashable, B'.Default, B'.Typeable) instance B'.BondType Modifier where bondPut (Modifier v') = B'.bondPut v' bondGet = P'.fmap Modifier B'.bondGet getName _ = "Modifier" getQualifiedName _ = "bond.Modifier" getElementType _ = B'.ElementInt32 instance B'.BondEnum Modifier where toName (Modifier 0) = P'.Just "Optional" toName (Modifier 1) = P'.Just "Required" toName (Modifier 2) = P'.Just "RequiredOptional" toName _ = P'.Nothing fromName "Optional" = P'.Just optional fromName "Required" = P'.Just required fromName "RequiredOptional" = P'.Just requiredOptional fromName _ = P'.Nothing optional, required, requiredOptional :: Modifier optional = Modifier 0 required = Modifier 1 requiredOptional = Modifier 2