vulkan-3.3: src/Vulkan/CStruct/Extends.hs-boot
{-# language CPP #-}
module Vulkan.CStruct.Extends ( BaseInStructure
, BaseOutStructure
, Extendss
, PeekChain
, PokeChain
, Chain
) where
import Data.Kind (Constraint)
import Data.Kind (Type)
import Vulkan.CStruct (FromCStruct)
import Vulkan.CStruct (ToCStruct)
data BaseInStructure
instance ToCStruct BaseInStructure
instance Show BaseInStructure
instance FromCStruct BaseInStructure
data BaseOutStructure
instance ToCStruct BaseOutStructure
instance Show BaseOutStructure
instance FromCStruct BaseOutStructure
class PeekChain (xs :: [Type])
class PokeChain (xs :: [Type])
type family Extends (p :: [Type] -> Type) (x :: Type) :: Constraint
type family Extendss (p :: [Type] -> Type) (xs :: [Type]) :: Constraint where
Extendss p '[] = ()
Extendss p (x : xs) = (Extends p x, Extendss p xs)
type family Chain (xs :: [a]) = (r :: a) | r -> xs where
Chain '[] = ()
Chain (x:xs) = (x, Chain xs)