module ClickHaskell.Primitive.TEnum where

-- Internal
import ClickHaskell.Primitive.Serialization

-- GHC included
import Data.Bits (Bits)
import Data.ByteString.Builder (byteString, int8, int16LE)
import Data.ByteString.Char8 as BS8 (pack)
import Data.Int (Int8, Int16)
import Data.Typeable (Proxy (..))
import GHC.TypeLits (KnownSymbol, Symbol, symbolVal)

-- External
import Data.Binary.Get (getInt8, getInt16le)


-- * Enum8

newtype Enum8 (enums :: Symbol) = MkEnum8 Int8
  deriving newtype (Int -> Enum8 enums -> ShowS
[Enum8 enums] -> ShowS
Enum8 enums -> String
(Int -> Enum8 enums -> ShowS)
-> (Enum8 enums -> String)
-> ([Enum8 enums] -> ShowS)
-> Show (Enum8 enums)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (enums :: Symbol). Int -> Enum8 enums -> ShowS
forall (enums :: Symbol). [Enum8 enums] -> ShowS
forall (enums :: Symbol). Enum8 enums -> String
$cshowsPrec :: forall (enums :: Symbol). Int -> Enum8 enums -> ShowS
showsPrec :: Int -> Enum8 enums -> ShowS
$cshow :: forall (enums :: Symbol). Enum8 enums -> String
show :: Enum8 enums -> String
$cshowList :: forall (enums :: Symbol). [Enum8 enums] -> ShowS
showList :: [Enum8 enums] -> ShowS
Show, Enum8 enums -> Enum8 enums -> Bool
(Enum8 enums -> Enum8 enums -> Bool)
-> (Enum8 enums -> Enum8 enums -> Bool) -> Eq (Enum8 enums)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (enums :: Symbol). Enum8 enums -> Enum8 enums -> Bool
$c== :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums -> Bool
== :: Enum8 enums -> Enum8 enums -> Bool
$c/= :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums -> Bool
/= :: Enum8 enums -> Enum8 enums -> Bool
Eq, Integer -> Enum8 enums
Enum8 enums -> Enum8 enums
Enum8 enums -> Enum8 enums -> Enum8 enums
(Enum8 enums -> Enum8 enums -> Enum8 enums)
-> (Enum8 enums -> Enum8 enums -> Enum8 enums)
-> (Enum8 enums -> Enum8 enums -> Enum8 enums)
-> (Enum8 enums -> Enum8 enums)
-> (Enum8 enums -> Enum8 enums)
-> (Enum8 enums -> Enum8 enums)
-> (Integer -> Enum8 enums)
-> Num (Enum8 enums)
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
forall (enums :: Symbol). Integer -> Enum8 enums
forall (enums :: Symbol). Enum8 enums -> Enum8 enums
forall (enums :: Symbol). Enum8 enums -> Enum8 enums -> Enum8 enums
$c+ :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums -> Enum8 enums
+ :: Enum8 enums -> Enum8 enums -> Enum8 enums
$c- :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums -> Enum8 enums
- :: Enum8 enums -> Enum8 enums -> Enum8 enums
$c* :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums -> Enum8 enums
* :: Enum8 enums -> Enum8 enums -> Enum8 enums
$cnegate :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums
negate :: Enum8 enums -> Enum8 enums
$cabs :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums
abs :: Enum8 enums -> Enum8 enums
$csignum :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums
signum :: Enum8 enums -> Enum8 enums
$cfromInteger :: forall (enums :: Symbol). Integer -> Enum8 enums
fromInteger :: Integer -> Enum8 enums
Num, Eq (Enum8 enums)
Enum8 enums
Eq (Enum8 enums) =>
(Enum8 enums -> Enum8 enums -> Enum8 enums)
-> (Enum8 enums -> Enum8 enums -> Enum8 enums)
-> (Enum8 enums -> Enum8 enums -> Enum8 enums)
-> (Enum8 enums -> Enum8 enums)
-> (Enum8 enums -> Int -> Enum8 enums)
-> (Enum8 enums -> Int -> Enum8 enums)
-> Enum8 enums
-> (Int -> Enum8 enums)
-> (Enum8 enums -> Int -> Enum8 enums)
-> (Enum8 enums -> Int -> Enum8 enums)
-> (Enum8 enums -> Int -> Enum8 enums)
-> (Enum8 enums -> Int -> Bool)
-> (Enum8 enums -> Maybe Int)
-> (Enum8 enums -> Int)
-> (Enum8 enums -> Bool)
-> (Enum8 enums -> Int -> Enum8 enums)
-> (Enum8 enums -> Int -> Enum8 enums)
-> (Enum8 enums -> Int -> Enum8 enums)
-> (Enum8 enums -> Int -> Enum8 enums)
-> (Enum8 enums -> Int -> Enum8 enums)
-> (Enum8 enums -> Int -> Enum8 enums)
-> (Enum8 enums -> Int)
-> Bits (Enum8 enums)
Int -> Enum8 enums
Enum8 enums -> Bool
Enum8 enums -> Int
Enum8 enums -> Maybe Int
Enum8 enums -> Enum8 enums
Enum8 enums -> Int -> Bool
Enum8 enums -> Int -> Enum8 enums
Enum8 enums -> Enum8 enums -> Enum8 enums
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
forall (enums :: Symbol). Eq (Enum8 enums)
forall (enums :: Symbol). Enum8 enums
forall (enums :: Symbol). Int -> Enum8 enums
forall (enums :: Symbol). Enum8 enums -> Bool
forall (enums :: Symbol). Enum8 enums -> Int
forall (enums :: Symbol). Enum8 enums -> Maybe Int
forall (enums :: Symbol). Enum8 enums -> Enum8 enums
forall (enums :: Symbol). Enum8 enums -> Int -> Bool
forall (enums :: Symbol). Enum8 enums -> Int -> Enum8 enums
forall (enums :: Symbol). Enum8 enums -> Enum8 enums -> Enum8 enums
$c.&. :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums -> Enum8 enums
.&. :: Enum8 enums -> Enum8 enums -> Enum8 enums
$c.|. :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums -> Enum8 enums
.|. :: Enum8 enums -> Enum8 enums -> Enum8 enums
$cxor :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums -> Enum8 enums
xor :: Enum8 enums -> Enum8 enums -> Enum8 enums
$ccomplement :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums
complement :: Enum8 enums -> Enum8 enums
$cshift :: forall (enums :: Symbol). Enum8 enums -> Int -> Enum8 enums
shift :: Enum8 enums -> Int -> Enum8 enums
$crotate :: forall (enums :: Symbol). Enum8 enums -> Int -> Enum8 enums
rotate :: Enum8 enums -> Int -> Enum8 enums
$czeroBits :: forall (enums :: Symbol). Enum8 enums
zeroBits :: Enum8 enums
$cbit :: forall (enums :: Symbol). Int -> Enum8 enums
bit :: Int -> Enum8 enums
$csetBit :: forall (enums :: Symbol). Enum8 enums -> Int -> Enum8 enums
setBit :: Enum8 enums -> Int -> Enum8 enums
$cclearBit :: forall (enums :: Symbol). Enum8 enums -> Int -> Enum8 enums
clearBit :: Enum8 enums -> Int -> Enum8 enums
$ccomplementBit :: forall (enums :: Symbol). Enum8 enums -> Int -> Enum8 enums
complementBit :: Enum8 enums -> Int -> Enum8 enums
$ctestBit :: forall (enums :: Symbol). Enum8 enums -> Int -> Bool
testBit :: Enum8 enums -> Int -> Bool
$cbitSizeMaybe :: forall (enums :: Symbol). Enum8 enums -> Maybe Int
bitSizeMaybe :: Enum8 enums -> Maybe Int
$cbitSize :: forall (enums :: Symbol). Enum8 enums -> Int
bitSize :: Enum8 enums -> Int
$cisSigned :: forall (enums :: Symbol). Enum8 enums -> Bool
isSigned :: Enum8 enums -> Bool
$cshiftL :: forall (enums :: Symbol). Enum8 enums -> Int -> Enum8 enums
shiftL :: Enum8 enums -> Int -> Enum8 enums
$cunsafeShiftL :: forall (enums :: Symbol). Enum8 enums -> Int -> Enum8 enums
unsafeShiftL :: Enum8 enums -> Int -> Enum8 enums
$cshiftR :: forall (enums :: Symbol). Enum8 enums -> Int -> Enum8 enums
shiftR :: Enum8 enums -> Int -> Enum8 enums
$cunsafeShiftR :: forall (enums :: Symbol). Enum8 enums -> Int -> Enum8 enums
unsafeShiftR :: Enum8 enums -> Int -> Enum8 enums
$crotateL :: forall (enums :: Symbol). Enum8 enums -> Int -> Enum8 enums
rotateL :: Enum8 enums -> Int -> Enum8 enums
$crotateR :: forall (enums :: Symbol). Enum8 enums -> Int -> Enum8 enums
rotateR :: Enum8 enums -> Int -> Enum8 enums
$cpopCount :: forall (enums :: Symbol). Enum8 enums -> Int
popCount :: Enum8 enums -> Int
Bits, Enum8 enums
Enum8 enums -> Enum8 enums -> Bounded (Enum8 enums)
forall a. a -> a -> Bounded a
forall (enums :: Symbol). Enum8 enums
$cminBound :: forall (enums :: Symbol). Enum8 enums
minBound :: Enum8 enums
$cmaxBound :: forall (enums :: Symbol). Enum8 enums
maxBound :: Enum8 enums
Bounded, Int -> Enum8 enums
Enum8 enums -> Int
Enum8 enums -> [Enum8 enums]
Enum8 enums -> Enum8 enums
Enum8 enums -> Enum8 enums -> [Enum8 enums]
Enum8 enums -> Enum8 enums -> Enum8 enums -> [Enum8 enums]
(Enum8 enums -> Enum8 enums)
-> (Enum8 enums -> Enum8 enums)
-> (Int -> Enum8 enums)
-> (Enum8 enums -> Int)
-> (Enum8 enums -> [Enum8 enums])
-> (Enum8 enums -> Enum8 enums -> [Enum8 enums])
-> (Enum8 enums -> Enum8 enums -> [Enum8 enums])
-> (Enum8 enums -> Enum8 enums -> Enum8 enums -> [Enum8 enums])
-> Enum (Enum8 enums)
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
forall (enums :: Symbol). Int -> Enum8 enums
forall (enums :: Symbol). Enum8 enums -> Int
forall (enums :: Symbol). Enum8 enums -> [Enum8 enums]
forall (enums :: Symbol). Enum8 enums -> Enum8 enums
forall (enums :: Symbol).
Enum8 enums -> Enum8 enums -> [Enum8 enums]
forall (enums :: Symbol).
Enum8 enums -> Enum8 enums -> Enum8 enums -> [Enum8 enums]
$csucc :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums
succ :: Enum8 enums -> Enum8 enums
$cpred :: forall (enums :: Symbol). Enum8 enums -> Enum8 enums
pred :: Enum8 enums -> Enum8 enums
$ctoEnum :: forall (enums :: Symbol). Int -> Enum8 enums
toEnum :: Int -> Enum8 enums
$cfromEnum :: forall (enums :: Symbol). Enum8 enums -> Int
fromEnum :: Enum8 enums -> Int
$cenumFrom :: forall (enums :: Symbol). Enum8 enums -> [Enum8 enums]
enumFrom :: Enum8 enums -> [Enum8 enums]
$cenumFromThen :: forall (enums :: Symbol).
Enum8 enums -> Enum8 enums -> [Enum8 enums]
enumFromThen :: Enum8 enums -> Enum8 enums -> [Enum8 enums]
$cenumFromTo :: forall (enums :: Symbol).
Enum8 enums -> Enum8 enums -> [Enum8 enums]
enumFromTo :: Enum8 enums -> Enum8 enums -> [Enum8 enums]
$cenumFromThenTo :: forall (enums :: Symbol).
Enum8 enums -> Enum8 enums -> Enum8 enums -> [Enum8 enums]
enumFromThenTo :: Enum8 enums -> Enum8 enums -> Enum8 enums -> [Enum8 enums]
Enum)

instance KnownSymbol enums => IsChType (Enum8 enums) where
  chTypeName :: String
chTypeName = String
"Enum8(" String -> ShowS
forall a. Semigroup a => a -> a -> a
<> forall (n :: Symbol) (proxy :: Symbol -> *).
KnownSymbol n =>
proxy n -> String
symbolVal @enums Proxy enums
forall {k} (t :: k). Proxy t
Proxy String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
")"
  defaultValueOfTypeName :: Enum8 enums
defaultValueOfTypeName = Enum8 enums
0

instance Serializable (Enum8 enums)  where
  serialize :: ProtocolRevision -> Enum8 enums -> Builder
serialize ProtocolRevision
_ (MkEnum8 Int8
i8) = Int8 -> Builder
int8 Int8
i8
  deserialize :: ProtocolRevision -> Get (Enum8 enums)
deserialize ProtocolRevision
_ = Int8 -> Enum8 enums
forall (enums :: Symbol). Int8 -> Enum8 enums
MkEnum8 (Int8 -> Enum8 enums) -> Get Int8 -> Get (Enum8 enums)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Int8
getInt8
  {-# INLINE deserialize #-}

instance ToChType (Enum8 enums) Int8 where
  toChType :: Int8 -> Enum8 enums
toChType = Int8 -> Enum8 enums
forall (enums :: Symbol). Int8 -> Enum8 enums
MkEnum8
  fromChType :: Enum8 enums -> Int8
fromChType (MkEnum8 Int8
i8)= Int8
i8

instance ToQueryPart (Enum8 enums) where
  toQueryPart :: Enum8 enums -> Builder
toQueryPart = StrictByteString -> Builder
byteString (StrictByteString -> Builder)
-> (Enum8 enums -> StrictByteString) -> Enum8 enums -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> StrictByteString
BS8.pack (String -> StrictByteString)
-> (Enum8 enums -> String) -> Enum8 enums -> StrictByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int8 -> String
forall a. Show a => a -> String
show (Int8 -> String) -> (Enum8 enums -> Int8) -> Enum8 enums -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall chType userType.
ToChType chType userType =>
chType -> userType
fromChType @_ @Int8


-- * Enum16

newtype Enum16 (enums :: Symbol) = MkEnum16 Int16
  deriving newtype (Int -> Enum16 enums -> ShowS
[Enum16 enums] -> ShowS
Enum16 enums -> String
(Int -> Enum16 enums -> ShowS)
-> (Enum16 enums -> String)
-> ([Enum16 enums] -> ShowS)
-> Show (Enum16 enums)
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
forall (enums :: Symbol). Int -> Enum16 enums -> ShowS
forall (enums :: Symbol). [Enum16 enums] -> ShowS
forall (enums :: Symbol). Enum16 enums -> String
$cshowsPrec :: forall (enums :: Symbol). Int -> Enum16 enums -> ShowS
showsPrec :: Int -> Enum16 enums -> ShowS
$cshow :: forall (enums :: Symbol). Enum16 enums -> String
show :: Enum16 enums -> String
$cshowList :: forall (enums :: Symbol). [Enum16 enums] -> ShowS
showList :: [Enum16 enums] -> ShowS
Show, Enum16 enums -> Enum16 enums -> Bool
(Enum16 enums -> Enum16 enums -> Bool)
-> (Enum16 enums -> Enum16 enums -> Bool) -> Eq (Enum16 enums)
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
forall (enums :: Symbol). Enum16 enums -> Enum16 enums -> Bool
$c== :: forall (enums :: Symbol). Enum16 enums -> Enum16 enums -> Bool
== :: Enum16 enums -> Enum16 enums -> Bool
$c/= :: forall (enums :: Symbol). Enum16 enums -> Enum16 enums -> Bool
/= :: Enum16 enums -> Enum16 enums -> Bool
Eq, Integer -> Enum16 enums
Enum16 enums -> Enum16 enums
Enum16 enums -> Enum16 enums -> Enum16 enums
(Enum16 enums -> Enum16 enums -> Enum16 enums)
-> (Enum16 enums -> Enum16 enums -> Enum16 enums)
-> (Enum16 enums -> Enum16 enums -> Enum16 enums)
-> (Enum16 enums -> Enum16 enums)
-> (Enum16 enums -> Enum16 enums)
-> (Enum16 enums -> Enum16 enums)
-> (Integer -> Enum16 enums)
-> Num (Enum16 enums)
forall a.
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> a)
-> (a -> a)
-> (Integer -> a)
-> Num a
forall (enums :: Symbol). Integer -> Enum16 enums
forall (enums :: Symbol). Enum16 enums -> Enum16 enums
forall (enums :: Symbol).
Enum16 enums -> Enum16 enums -> Enum16 enums
$c+ :: forall (enums :: Symbol).
Enum16 enums -> Enum16 enums -> Enum16 enums
+ :: Enum16 enums -> Enum16 enums -> Enum16 enums
$c- :: forall (enums :: Symbol).
Enum16 enums -> Enum16 enums -> Enum16 enums
- :: Enum16 enums -> Enum16 enums -> Enum16 enums
$c* :: forall (enums :: Symbol).
Enum16 enums -> Enum16 enums -> Enum16 enums
* :: Enum16 enums -> Enum16 enums -> Enum16 enums
$cnegate :: forall (enums :: Symbol). Enum16 enums -> Enum16 enums
negate :: Enum16 enums -> Enum16 enums
$cabs :: forall (enums :: Symbol). Enum16 enums -> Enum16 enums
abs :: Enum16 enums -> Enum16 enums
$csignum :: forall (enums :: Symbol). Enum16 enums -> Enum16 enums
signum :: Enum16 enums -> Enum16 enums
$cfromInteger :: forall (enums :: Symbol). Integer -> Enum16 enums
fromInteger :: Integer -> Enum16 enums
Num, Eq (Enum16 enums)
Enum16 enums
Eq (Enum16 enums) =>
(Enum16 enums -> Enum16 enums -> Enum16 enums)
-> (Enum16 enums -> Enum16 enums -> Enum16 enums)
-> (Enum16 enums -> Enum16 enums -> Enum16 enums)
-> (Enum16 enums -> Enum16 enums)
-> (Enum16 enums -> Int -> Enum16 enums)
-> (Enum16 enums -> Int -> Enum16 enums)
-> Enum16 enums
-> (Int -> Enum16 enums)
-> (Enum16 enums -> Int -> Enum16 enums)
-> (Enum16 enums -> Int -> Enum16 enums)
-> (Enum16 enums -> Int -> Enum16 enums)
-> (Enum16 enums -> Int -> Bool)
-> (Enum16 enums -> Maybe Int)
-> (Enum16 enums -> Int)
-> (Enum16 enums -> Bool)
-> (Enum16 enums -> Int -> Enum16 enums)
-> (Enum16 enums -> Int -> Enum16 enums)
-> (Enum16 enums -> Int -> Enum16 enums)
-> (Enum16 enums -> Int -> Enum16 enums)
-> (Enum16 enums -> Int -> Enum16 enums)
-> (Enum16 enums -> Int -> Enum16 enums)
-> (Enum16 enums -> Int)
-> Bits (Enum16 enums)
Int -> Enum16 enums
Enum16 enums -> Bool
Enum16 enums -> Int
Enum16 enums -> Maybe Int
Enum16 enums -> Enum16 enums
Enum16 enums -> Int -> Bool
Enum16 enums -> Int -> Enum16 enums
Enum16 enums -> Enum16 enums -> Enum16 enums
forall a.
Eq a =>
(a -> a -> a)
-> (a -> a -> a)
-> (a -> a -> a)
-> (a -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> a
-> (Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> Bool)
-> (a -> Maybe Int)
-> (a -> Int)
-> (a -> Bool)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int -> a)
-> (a -> Int)
-> Bits a
forall (enums :: Symbol). Eq (Enum16 enums)
forall (enums :: Symbol). Enum16 enums
forall (enums :: Symbol). Int -> Enum16 enums
forall (enums :: Symbol). Enum16 enums -> Bool
forall (enums :: Symbol). Enum16 enums -> Int
forall (enums :: Symbol). Enum16 enums -> Maybe Int
forall (enums :: Symbol). Enum16 enums -> Enum16 enums
forall (enums :: Symbol). Enum16 enums -> Int -> Bool
forall (enums :: Symbol). Enum16 enums -> Int -> Enum16 enums
forall (enums :: Symbol).
Enum16 enums -> Enum16 enums -> Enum16 enums
$c.&. :: forall (enums :: Symbol).
Enum16 enums -> Enum16 enums -> Enum16 enums
.&. :: Enum16 enums -> Enum16 enums -> Enum16 enums
$c.|. :: forall (enums :: Symbol).
Enum16 enums -> Enum16 enums -> Enum16 enums
.|. :: Enum16 enums -> Enum16 enums -> Enum16 enums
$cxor :: forall (enums :: Symbol).
Enum16 enums -> Enum16 enums -> Enum16 enums
xor :: Enum16 enums -> Enum16 enums -> Enum16 enums
$ccomplement :: forall (enums :: Symbol). Enum16 enums -> Enum16 enums
complement :: Enum16 enums -> Enum16 enums
$cshift :: forall (enums :: Symbol). Enum16 enums -> Int -> Enum16 enums
shift :: Enum16 enums -> Int -> Enum16 enums
$crotate :: forall (enums :: Symbol). Enum16 enums -> Int -> Enum16 enums
rotate :: Enum16 enums -> Int -> Enum16 enums
$czeroBits :: forall (enums :: Symbol). Enum16 enums
zeroBits :: Enum16 enums
$cbit :: forall (enums :: Symbol). Int -> Enum16 enums
bit :: Int -> Enum16 enums
$csetBit :: forall (enums :: Symbol). Enum16 enums -> Int -> Enum16 enums
setBit :: Enum16 enums -> Int -> Enum16 enums
$cclearBit :: forall (enums :: Symbol). Enum16 enums -> Int -> Enum16 enums
clearBit :: Enum16 enums -> Int -> Enum16 enums
$ccomplementBit :: forall (enums :: Symbol). Enum16 enums -> Int -> Enum16 enums
complementBit :: Enum16 enums -> Int -> Enum16 enums
$ctestBit :: forall (enums :: Symbol). Enum16 enums -> Int -> Bool
testBit :: Enum16 enums -> Int -> Bool
$cbitSizeMaybe :: forall (enums :: Symbol). Enum16 enums -> Maybe Int
bitSizeMaybe :: Enum16 enums -> Maybe Int
$cbitSize :: forall (enums :: Symbol). Enum16 enums -> Int
bitSize :: Enum16 enums -> Int
$cisSigned :: forall (enums :: Symbol). Enum16 enums -> Bool
isSigned :: Enum16 enums -> Bool
$cshiftL :: forall (enums :: Symbol). Enum16 enums -> Int -> Enum16 enums
shiftL :: Enum16 enums -> Int -> Enum16 enums
$cunsafeShiftL :: forall (enums :: Symbol). Enum16 enums -> Int -> Enum16 enums
unsafeShiftL :: Enum16 enums -> Int -> Enum16 enums
$cshiftR :: forall (enums :: Symbol). Enum16 enums -> Int -> Enum16 enums
shiftR :: Enum16 enums -> Int -> Enum16 enums
$cunsafeShiftR :: forall (enums :: Symbol). Enum16 enums -> Int -> Enum16 enums
unsafeShiftR :: Enum16 enums -> Int -> Enum16 enums
$crotateL :: forall (enums :: Symbol). Enum16 enums -> Int -> Enum16 enums
rotateL :: Enum16 enums -> Int -> Enum16 enums
$crotateR :: forall (enums :: Symbol). Enum16 enums -> Int -> Enum16 enums
rotateR :: Enum16 enums -> Int -> Enum16 enums
$cpopCount :: forall (enums :: Symbol). Enum16 enums -> Int
popCount :: Enum16 enums -> Int
Bits, Enum16 enums
Enum16 enums -> Enum16 enums -> Bounded (Enum16 enums)
forall a. a -> a -> Bounded a
forall (enums :: Symbol). Enum16 enums
$cminBound :: forall (enums :: Symbol). Enum16 enums
minBound :: Enum16 enums
$cmaxBound :: forall (enums :: Symbol). Enum16 enums
maxBound :: Enum16 enums
Bounded, Int -> Enum16 enums
Enum16 enums -> Int
Enum16 enums -> [Enum16 enums]
Enum16 enums -> Enum16 enums
Enum16 enums -> Enum16 enums -> [Enum16 enums]
Enum16 enums -> Enum16 enums -> Enum16 enums -> [Enum16 enums]
(Enum16 enums -> Enum16 enums)
-> (Enum16 enums -> Enum16 enums)
-> (Int -> Enum16 enums)
-> (Enum16 enums -> Int)
-> (Enum16 enums -> [Enum16 enums])
-> (Enum16 enums -> Enum16 enums -> [Enum16 enums])
-> (Enum16 enums -> Enum16 enums -> [Enum16 enums])
-> (Enum16 enums -> Enum16 enums -> Enum16 enums -> [Enum16 enums])
-> Enum (Enum16 enums)
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
forall (enums :: Symbol). Int -> Enum16 enums
forall (enums :: Symbol). Enum16 enums -> Int
forall (enums :: Symbol). Enum16 enums -> [Enum16 enums]
forall (enums :: Symbol). Enum16 enums -> Enum16 enums
forall (enums :: Symbol).
Enum16 enums -> Enum16 enums -> [Enum16 enums]
forall (enums :: Symbol).
Enum16 enums -> Enum16 enums -> Enum16 enums -> [Enum16 enums]
$csucc :: forall (enums :: Symbol). Enum16 enums -> Enum16 enums
succ :: Enum16 enums -> Enum16 enums
$cpred :: forall (enums :: Symbol). Enum16 enums -> Enum16 enums
pred :: Enum16 enums -> Enum16 enums
$ctoEnum :: forall (enums :: Symbol). Int -> Enum16 enums
toEnum :: Int -> Enum16 enums
$cfromEnum :: forall (enums :: Symbol). Enum16 enums -> Int
fromEnum :: Enum16 enums -> Int
$cenumFrom :: forall (enums :: Symbol). Enum16 enums -> [Enum16 enums]
enumFrom :: Enum16 enums -> [Enum16 enums]
$cenumFromThen :: forall (enums :: Symbol).
Enum16 enums -> Enum16 enums -> [Enum16 enums]
enumFromThen :: Enum16 enums -> Enum16 enums -> [Enum16 enums]
$cenumFromTo :: forall (enums :: Symbol).
Enum16 enums -> Enum16 enums -> [Enum16 enums]
enumFromTo :: Enum16 enums -> Enum16 enums -> [Enum16 enums]
$cenumFromThenTo :: forall (enums :: Symbol).
Enum16 enums -> Enum16 enums -> Enum16 enums -> [Enum16 enums]
enumFromThenTo :: Enum16 enums -> Enum16 enums -> Enum16 enums -> [Enum16 enums]
Enum)

instance KnownSymbol enums => IsChType (Enum16 enums) where
  chTypeName :: String
chTypeName = String
"Enum16(" String -> ShowS
forall a. Semigroup a => a -> a -> a
<> forall (n :: Symbol) (proxy :: Symbol -> *).
KnownSymbol n =>
proxy n -> String
symbolVal @enums Proxy enums
forall {k} (t :: k). Proxy t
Proxy String -> ShowS
forall a. Semigroup a => a -> a -> a
<> String
")"
  defaultValueOfTypeName :: Enum16 enums
defaultValueOfTypeName = Enum16 enums
0

instance Serializable (Enum16 enums)  where
  serialize :: ProtocolRevision -> Enum16 enums -> Builder
serialize ProtocolRevision
_ (MkEnum16 Int16
i16) = Int16 -> Builder
int16LE Int16
i16
  deserialize :: ProtocolRevision -> Get (Enum16 enums)
deserialize ProtocolRevision
_ = Int16 -> Enum16 enums
forall (enums :: Symbol). Int16 -> Enum16 enums
MkEnum16 (Int16 -> Enum16 enums) -> Get Int16 -> Get (Enum16 enums)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Get Int16
getInt16le
  {-# INLINE deserialize #-}

instance ToChType (Enum16 enums) Int16 where
  toChType :: Int16 -> Enum16 enums
toChType = Int16 -> Enum16 enums
forall (enums :: Symbol). Int16 -> Enum16 enums
MkEnum16
  fromChType :: Enum16 enums -> Int16
fromChType (MkEnum16 Int16
i16) = Int16
i16

instance ToQueryPart (Enum16 enums) where
  toQueryPart :: Enum16 enums -> Builder
toQueryPart = StrictByteString -> Builder
byteString (StrictByteString -> Builder)
-> (Enum16 enums -> StrictByteString) -> Enum16 enums -> Builder
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> StrictByteString
BS8.pack (String -> StrictByteString)
-> (Enum16 enums -> String) -> Enum16 enums -> StrictByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Int16 -> String
forall a. Show a => a -> String
show (Int16 -> String)
-> (Enum16 enums -> Int16) -> Enum16 enums -> String
forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall chType userType.
ToChType chType userType =>
chType -> userType
fromChType @_ @Int16