{-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Gpu.Vulkan.Device.GroupDevice.Internal ( CreateInfo(..), Mask(..), pattern AllDevice, Index, mkMask ) where import Data.Bits import Data.Word import Data.Default import Gpu.Vulkan.Device.GroupDevice.Middle newtype Mask = Mask Word32 deriving (Int -> Mask -> ShowS [Mask] -> ShowS Mask -> String (Int -> Mask -> ShowS) -> (Mask -> String) -> ([Mask] -> ShowS) -> Show Mask forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a $cshowsPrec :: Int -> Mask -> ShowS showsPrec :: Int -> Mask -> ShowS $cshow :: Mask -> String show :: Mask -> String $cshowList :: [Mask] -> ShowS showList :: [Mask] -> ShowS Show, Mask -> Mask -> Bool (Mask -> Mask -> Bool) -> (Mask -> Mask -> Bool) -> Eq Mask forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a $c== :: Mask -> Mask -> Bool == :: Mask -> Mask -> Bool $c/= :: Mask -> Mask -> Bool /= :: Mask -> Mask -> Bool Eq, Eq Mask Mask Eq Mask => (Mask -> Mask -> Mask) -> (Mask -> Mask -> Mask) -> (Mask -> Mask -> Mask) -> (Mask -> Mask) -> (Mask -> Int -> Mask) -> (Mask -> Int -> Mask) -> Mask -> (Int -> Mask) -> (Mask -> Int -> Mask) -> (Mask -> Int -> Mask) -> (Mask -> Int -> Mask) -> (Mask -> Int -> Bool) -> (Mask -> Maybe Int) -> (Mask -> Int) -> (Mask -> Bool) -> (Mask -> Int -> Mask) -> (Mask -> Int -> Mask) -> (Mask -> Int -> Mask) -> (Mask -> Int -> Mask) -> (Mask -> Int -> Mask) -> (Mask -> Int -> Mask) -> (Mask -> Int) -> Bits Mask Int -> Mask Mask -> Bool Mask -> Int Mask -> Maybe Int Mask -> Mask Mask -> Int -> Bool Mask -> Int -> Mask Mask -> Mask -> Mask 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 $c.&. :: Mask -> Mask -> Mask .&. :: Mask -> Mask -> Mask $c.|. :: Mask -> Mask -> Mask .|. :: Mask -> Mask -> Mask $cxor :: Mask -> Mask -> Mask xor :: Mask -> Mask -> Mask $ccomplement :: Mask -> Mask complement :: Mask -> Mask $cshift :: Mask -> Int -> Mask shift :: Mask -> Int -> Mask $crotate :: Mask -> Int -> Mask rotate :: Mask -> Int -> Mask $czeroBits :: Mask zeroBits :: Mask $cbit :: Int -> Mask bit :: Int -> Mask $csetBit :: Mask -> Int -> Mask setBit :: Mask -> Int -> Mask $cclearBit :: Mask -> Int -> Mask clearBit :: Mask -> Int -> Mask $ccomplementBit :: Mask -> Int -> Mask complementBit :: Mask -> Int -> Mask $ctestBit :: Mask -> Int -> Bool testBit :: Mask -> Int -> Bool $cbitSizeMaybe :: Mask -> Maybe Int bitSizeMaybe :: Mask -> Maybe Int $cbitSize :: Mask -> Int bitSize :: Mask -> Int $cisSigned :: Mask -> Bool isSigned :: Mask -> Bool $cshiftL :: Mask -> Int -> Mask shiftL :: Mask -> Int -> Mask $cunsafeShiftL :: Mask -> Int -> Mask unsafeShiftL :: Mask -> Int -> Mask $cshiftR :: Mask -> Int -> Mask shiftR :: Mask -> Int -> Mask $cunsafeShiftR :: Mask -> Int -> Mask unsafeShiftR :: Mask -> Int -> Mask $crotateL :: Mask -> Int -> Mask rotateL :: Mask -> Int -> Mask $crotateR :: Mask -> Int -> Mask rotateR :: Mask -> Int -> Mask $cpopCount :: Mask -> Int popCount :: Mask -> Int Bits) instance Default Mask where def :: Mask def = Mask AllDevice pattern AllDevice :: Mask pattern $mAllDevice :: forall {r}. Mask -> ((# #) -> r) -> ((# #) -> r) -> r $bAllDevice :: Mask AllDevice = Mask 0 type Index = Word32 mkMask :: [Index] -> Mask mkMask :: [Index] -> Mask mkMask = (Mask -> Index -> Mask) -> Mask -> [Index] -> Mask forall b a. (b -> a -> b) -> b -> [a] -> b forall (t :: * -> *) b a. Foldable t => (b -> a -> b) -> b -> t a -> b foldl (((Int -> Mask) -> (Index -> Int) -> Index -> Mask forall b c a. (b -> c) -> (a -> b) -> a -> c . Index -> Int forall a b. (Integral a, Num b) => a -> b fromIntegral) ((Int -> Mask) -> Index -> Mask) -> (Mask -> Int -> Mask) -> Mask -> Index -> Mask forall b c a. (b -> c) -> (a -> b) -> a -> c . Mask -> Int -> Mask forall a. Bits a => a -> Int -> a setBit) Mask forall a. Bits a => a zeroBits