{-# LINE 1 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}


{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.Export
       (VkExportFenceCreateInfo, VkExportFenceCreateInfoKHR,
        VkExportMemoryAllocateInfo, VkExportMemoryAllocateInfoKHR,
        VkExportMemoryAllocateInfoNV, VkExportSemaphoreCreateInfo,
        VkExportSemaphoreCreateInfoKHR)
       where
import Graphics.Vulkan.Marshal
import Graphics.Vulkan.Marshal.Internal
import Graphics.Vulkan.Types.Enum.External      (VkExternalFenceHandleTypeFlags,
                                                 VkExternalMemoryHandleTypeFlags,
                                                 VkExternalMemoryHandleTypeFlagsNV,
                                                 VkExternalSemaphoreHandleTypeFlags)
import Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
import Graphics.Vulkan.Types.Struct.Fence       (VkFenceCreateInfo)
import Graphics.Vulkan.Types.Struct.Memory      (VkMemoryAllocateInfo)
import Graphics.Vulkan.Types.Struct.Semaphore   (VkSemaphoreCreateInfo)

-- | > typedef struct VkExportFenceCreateInfo {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkExternalFenceHandleTypeFlags handleTypes;
--   > } VkExportFenceCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkExportFenceCreateInfo VkExportFenceCreateInfo registry at www.khronos.org>
type VkExportFenceCreateInfo = VkStruct VkExportFenceCreateInfo' -- ' closing tick for hsc2hs

data VkExportFenceCreateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkExportFenceCreateInfo where
    type StructRep VkExportFenceCreateInfo =
         'StructMeta "VkExportFenceCreateInfo" VkExportFenceCreateInfo -- ' closing tick for hsc2hs
           (24)
{-# LINE 40 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
           8
{-# LINE 41 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 43 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 48 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "handleTypes" VkExternalFenceHandleTypeFlags 'True
                (16)
{-# LINE 53 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkFenceCreateInfo] -- ' closing tick for hsc2hs

-- | Alias for `VkExportFenceCreateInfo`
type VkExportFenceCreateInfoKHR = VkExportFenceCreateInfo

-- | > typedef struct VkExportMemoryAllocateInfo {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkExternalMemoryHandleTypeFlags handleTypes;
--   > } VkExportMemoryAllocateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkExportMemoryAllocateInfo VkExportMemoryAllocateInfo registry at www.khronos.org>
type VkExportMemoryAllocateInfo =
     VkStruct VkExportMemoryAllocateInfo' -- ' closing tick for hsc2hs

data VkExportMemoryAllocateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkExportMemoryAllocateInfo where
    type StructRep VkExportMemoryAllocateInfo =
         'StructMeta "VkExportMemoryAllocateInfo" VkExportMemoryAllocateInfo -- ' closing tick for hsc2hs
           (24)
{-# LINE 79 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
           8
{-# LINE 80 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 82 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 87 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "handleTypes" VkExternalMemoryHandleTypeFlags 'True
                (16)
{-# LINE 92 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs

-- | Alias for `VkExportMemoryAllocateInfo`
type VkExportMemoryAllocateInfoKHR = VkExportMemoryAllocateInfo

-- | > typedef struct VkExportMemoryAllocateInfoNV {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkExternalMemoryHandleTypeFlagsNV handleTypes;
--   > } VkExportMemoryAllocateInfoNV;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkExportMemoryAllocateInfoNV VkExportMemoryAllocateInfoNV registry at www.khronos.org>
type VkExportMemoryAllocateInfoNV =
     VkStruct VkExportMemoryAllocateInfoNV' -- ' closing tick for hsc2hs

data VkExportMemoryAllocateInfoNV' -- ' closing tick for hsc2hs

instance VulkanMarshal VkExportMemoryAllocateInfoNV where
    type StructRep VkExportMemoryAllocateInfoNV =
         'StructMeta "VkExportMemoryAllocateInfoNV" -- ' closing tick for hsc2hs
           VkExportMemoryAllocateInfoNV
           (24)
{-# LINE 119 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
           8
{-# LINE 120 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 122 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 127 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "handleTypes" VkExternalMemoryHandleTypeFlagsNV 'True
                (16)
{-# LINE 132 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkMemoryAllocateInfo] -- ' closing tick for hsc2hs

-- | > typedef struct VkExportSemaphoreCreateInfo {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     VkExternalSemaphoreHandleTypeFlags handleTypes;
--   > } VkExportSemaphoreCreateInfo;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.2-extensions/html/vkspec.html#VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfo registry at www.khronos.org>
type VkExportSemaphoreCreateInfo =
     VkStruct VkExportSemaphoreCreateInfo' -- ' closing tick for hsc2hs

data VkExportSemaphoreCreateInfo' -- ' closing tick for hsc2hs

instance VulkanMarshal VkExportSemaphoreCreateInfo where
    type StructRep VkExportSemaphoreCreateInfo =
         'StructMeta "VkExportSemaphoreCreateInfo" -- ' closing tick for hsc2hs
           VkExportSemaphoreCreateInfo
           (24)
{-# LINE 156 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
           8
{-# LINE 157 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
           '[('FieldMeta "sType" VkStructureType 'False  -- ' closing tick for hsc2hs
                                                        (0)
{-# LINE 159 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "pNext" (Ptr Void) 'False 
                                                   (8)
{-# LINE 164 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True), -- ' closing tick for hsc2hs
             ('FieldMeta "handleTypes" VkExternalSemaphoreHandleTypeFlags 'True
                (16)
{-# LINE 169 "src-gen/Graphics/Vulkan/Types/Struct/Export.hsc" #-}
                1
                'True -- ' closing tick for hsc2hs
                'True)] -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           'False -- ' closing tick for hsc2hs
           '[VkSemaphoreCreateInfo] -- ' closing tick for hsc2hs

-- | Alias for `VkExportSemaphoreCreateInfo`
type VkExportSemaphoreCreateInfoKHR = VkExportSemaphoreCreateInfo