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

{-# LINE 2 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

{-# LANGUAGE DataKinds             #-}
{-# LANGUAGE FlexibleInstances     #-}
{-# LANGUAGE MagicHash             #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE Strict                #-}
{-# LANGUAGE TypeApplications      #-}
{-# LANGUAGE TypeFamilies          #-}
module Graphics.Vulkan.Types.Struct.ObjectTable
       (VkObjectTableCreateInfoNVX(..),
        VkObjectTableDescriptorSetEntryNVX(..), VkObjectTableEntryNVX(..),
        VkObjectTableIndexBufferEntryNVX(..),
        VkObjectTablePipelineEntryNVX(..),
        VkObjectTablePushConstantEntryNVX(..),
        VkObjectTableVertexBufferEntryNVX(..))
       where
import           Foreign.Storable                         (Storable (..))
import           GHC.Base                                 (Addr#, ByteArray#,
                                                           byteArrayContents#,
                                                           plusAddr#)
import           Graphics.Vulkan.Marshal
import           Graphics.Vulkan.Marshal.Internal
import           Graphics.Vulkan.Types.Enum.IndexType     (VkIndexType)
import           Graphics.Vulkan.Types.Enum.Object        (VkObjectEntryTypeNVX, VkObjectEntryUsageFlagsNVX)
import           Graphics.Vulkan.Types.Enum.Shader        (VkShaderStageFlags)
import           Graphics.Vulkan.Types.Enum.StructureType (VkStructureType)
import           Graphics.Vulkan.Types.Handles            (VkBuffer,
                                                           VkDescriptorSet,
                                                           VkPipeline,
                                                           VkPipelineLayout)
import           System.IO.Unsafe                         (unsafeDupablePerformIO)

-- | > typedef struct VkObjectTableCreateInfoNVX {
--   >     VkStructureType sType;
--   >     const void*                      pNext;
--   >     uint32_t                                          objectCount;
--   >     const VkObjectEntryTypeNVX*       pObjectEntryTypes;
--   >     const uint32_t*                   pObjectEntryCounts;
--   >     const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags;
--   >     uint32_t maxUniformBuffersPerDescriptor;
--   >     uint32_t maxStorageBuffersPerDescriptor;
--   >     uint32_t maxStorageImagesPerDescriptor;
--   >     uint32_t maxSampledImagesPerDescriptor;
--   >     uint32_t maxPipelineLayouts;
--   > } VkObjectTableCreateInfoNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableCreateInfoNVX VkObjectTableCreateInfoNVX registry at www.khronos.org>
data VkObjectTableCreateInfoNVX = VkObjectTableCreateInfoNVX# Addr#
                                                              ByteArray#

instance Eq VkObjectTableCreateInfoNVX where
        (VkObjectTableCreateInfoNVX# a _) ==
          x@(VkObjectTableCreateInfoNVX# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkObjectTableCreateInfoNVX where
        (VkObjectTableCreateInfoNVX# a _) `compare`
          x@(VkObjectTableCreateInfoNVX# b _) = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkObjectTableCreateInfoNVX where
        sizeOf ~_ = (72)
{-# LINE 67 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_ = (8)
{-# LINE 70 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkObjectTableCreateInfoNVX where
        unsafeAddr (VkObjectTableCreateInfoNVX# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkObjectTableCreateInfoNVX# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkObjectTableCreateInfoNVX#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkObjectTableCreateInfoNVX where
        type StructFields VkObjectTableCreateInfoNVX =
             '["sType", "pNext", "objectCount", "pObjectEntryTypes", -- ' closing tick for hsc2hs
               "pObjectEntryCounts", "pObjectEntryUsageFlags",
               "maxUniformBuffersPerDescriptor", "maxStorageBuffersPerDescriptor",
               "maxStorageImagesPerDescriptor", "maxSampledImagesPerDescriptor",
               "maxPipelineLayouts"]
        type CUnionType VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs
        type StructExtends VkObjectTableCreateInfoNVX = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "sType" VkObjectTableCreateInfoNVX where
        type FieldType "sType" VkObjectTableCreateInfoNVX = VkStructureType
        type FieldOptional "sType" VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs
        type FieldOffset "sType" VkObjectTableCreateInfoNVX =
             (0)
{-# LINE 110 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "sType" VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 118 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "sType" VkObjectTableCreateInfoNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 125 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 129 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "sType" VkObjectTableCreateInfoNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 135 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pNext" VkObjectTableCreateInfoNVX where
        type FieldType "pNext" VkObjectTableCreateInfoNVX = Ptr Void
        type FieldOptional "pNext" VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pNext" VkObjectTableCreateInfoNVX =
             (8)
{-# LINE 142 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "pNext" VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 150 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pNext" VkObjectTableCreateInfoNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 157 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 161 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pNext" VkObjectTableCreateInfoNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 167 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "objectCount" VkObjectTableCreateInfoNVX where
        type FieldType "objectCount" VkObjectTableCreateInfoNVX = Word32
        type FieldOptional "objectCount" VkObjectTableCreateInfoNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "objectCount" VkObjectTableCreateInfoNVX =
             (16)
{-# LINE 175 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "objectCount" VkObjectTableCreateInfoNVX = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 183 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "objectCount" VkObjectTableCreateInfoNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 190 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 194 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "objectCount" VkObjectTableCreateInfoNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 200 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pObjectEntryTypes" VkObjectTableCreateInfoNVX where
        type FieldType "pObjectEntryTypes" VkObjectTableCreateInfoNVX =
             Ptr VkObjectEntryTypeNVX
        type FieldOptional "pObjectEntryTypes" VkObjectTableCreateInfoNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pObjectEntryTypes" VkObjectTableCreateInfoNVX =
             (24)
{-# LINE 209 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "pObjectEntryTypes" VkObjectTableCreateInfoNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (24)
{-# LINE 218 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pObjectEntryTypes" VkObjectTableCreateInfoNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (24))
{-# LINE 225 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (24)
{-# LINE 229 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pObjectEntryTypes" VkObjectTableCreateInfoNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (24)
{-# LINE 235 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pObjectEntryCounts" VkObjectTableCreateInfoNVX where
        type FieldType "pObjectEntryCounts" VkObjectTableCreateInfoNVX =
             Ptr Word32
        type FieldOptional "pObjectEntryCounts" VkObjectTableCreateInfoNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pObjectEntryCounts" VkObjectTableCreateInfoNVX =
             (32)
{-# LINE 244 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "pObjectEntryCounts" VkObjectTableCreateInfoNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (32)
{-# LINE 253 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pObjectEntryCounts" VkObjectTableCreateInfoNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (32))
{-# LINE 260 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (32)
{-# LINE 264 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pObjectEntryCounts" VkObjectTableCreateInfoNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (32)
{-# LINE 270 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pObjectEntryUsageFlags" VkObjectTableCreateInfoNVX where
        type FieldType "pObjectEntryUsageFlags" VkObjectTableCreateInfoNVX
             = Ptr VkObjectEntryUsageFlagsNVX
        type FieldOptional "pObjectEntryUsageFlags"
               VkObjectTableCreateInfoNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pObjectEntryUsageFlags"
               VkObjectTableCreateInfoNVX
             =
             (40)
{-# LINE 282 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "pObjectEntryUsageFlags"
               VkObjectTableCreateInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (40)
{-# LINE 292 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pObjectEntryUsageFlags" VkObjectTableCreateInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (40))
{-# LINE 300 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (40)
{-# LINE 304 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pObjectEntryUsageFlags" VkObjectTableCreateInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (40)
{-# LINE 311 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxUniformBuffersPerDescriptor"
           VkObjectTableCreateInfoNVX
         where
        type FieldType "maxUniformBuffersPerDescriptor"
               VkObjectTableCreateInfoNVX
             = Word32
        type FieldOptional "maxUniformBuffersPerDescriptor"
               VkObjectTableCreateInfoNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "maxUniformBuffersPerDescriptor"
               VkObjectTableCreateInfoNVX
             =
             (48)
{-# LINE 326 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "maxUniformBuffersPerDescriptor"
               VkObjectTableCreateInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (48)
{-# LINE 336 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "maxUniformBuffersPerDescriptor"
           VkObjectTableCreateInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (48))
{-# LINE 345 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (48)
{-# LINE 349 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "maxUniformBuffersPerDescriptor"
           VkObjectTableCreateInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (48)
{-# LINE 357 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxStorageBuffersPerDescriptor"
           VkObjectTableCreateInfoNVX
         where
        type FieldType "maxStorageBuffersPerDescriptor"
               VkObjectTableCreateInfoNVX
             = Word32
        type FieldOptional "maxStorageBuffersPerDescriptor"
               VkObjectTableCreateInfoNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "maxStorageBuffersPerDescriptor"
               VkObjectTableCreateInfoNVX
             =
             (52)
{-# LINE 372 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "maxStorageBuffersPerDescriptor"
               VkObjectTableCreateInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (52)
{-# LINE 382 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "maxStorageBuffersPerDescriptor"
           VkObjectTableCreateInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (52))
{-# LINE 391 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (52)
{-# LINE 395 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "maxStorageBuffersPerDescriptor"
           VkObjectTableCreateInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (52)
{-# LINE 403 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxStorageImagesPerDescriptor" VkObjectTableCreateInfoNVX
         where
        type FieldType "maxStorageImagesPerDescriptor"
               VkObjectTableCreateInfoNVX
             = Word32
        type FieldOptional "maxStorageImagesPerDescriptor"
               VkObjectTableCreateInfoNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "maxStorageImagesPerDescriptor"
               VkObjectTableCreateInfoNVX
             =
             (56)
{-# LINE 417 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "maxStorageImagesPerDescriptor"
               VkObjectTableCreateInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (56)
{-# LINE 427 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "maxStorageImagesPerDescriptor"
           VkObjectTableCreateInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (56))
{-# LINE 436 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (56)
{-# LINE 440 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "maxStorageImagesPerDescriptor"
           VkObjectTableCreateInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (56)
{-# LINE 448 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxSampledImagesPerDescriptor" VkObjectTableCreateInfoNVX
         where
        type FieldType "maxSampledImagesPerDescriptor"
               VkObjectTableCreateInfoNVX
             = Word32
        type FieldOptional "maxSampledImagesPerDescriptor"
               VkObjectTableCreateInfoNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "maxSampledImagesPerDescriptor"
               VkObjectTableCreateInfoNVX
             =
             (60)
{-# LINE 462 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "maxSampledImagesPerDescriptor"
               VkObjectTableCreateInfoNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (60)
{-# LINE 472 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "maxSampledImagesPerDescriptor"
           VkObjectTableCreateInfoNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (60))
{-# LINE 481 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (60)
{-# LINE 485 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "maxSampledImagesPerDescriptor"
           VkObjectTableCreateInfoNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (60)
{-# LINE 493 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "maxPipelineLayouts" VkObjectTableCreateInfoNVX where
        type FieldType "maxPipelineLayouts" VkObjectTableCreateInfoNVX =
             Word32
        type FieldOptional "maxPipelineLayouts" VkObjectTableCreateInfoNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "maxPipelineLayouts" VkObjectTableCreateInfoNVX =
             (64)
{-# LINE 502 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "maxPipelineLayouts" VkObjectTableCreateInfoNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (64)
{-# LINE 511 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "maxPipelineLayouts" VkObjectTableCreateInfoNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (64))
{-# LINE 518 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (64)
{-# LINE 522 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "maxPipelineLayouts" VkObjectTableCreateInfoNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (64)
{-# LINE 528 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance Show VkObjectTableCreateInfoNVX where
        showsPrec d x
          = showString "VkObjectTableCreateInfoNVX {" .
              showString "sType = " .
                showsPrec d (getField @"sType" x) .
                  showString ", " .
                    showString "pNext = " .
                      showsPrec d (getField @"pNext" x) .
                        showString ", " .
                          showString "objectCount = " .
                            showsPrec d (getField @"objectCount" x) .
                              showString ", " .
                                showString "pObjectEntryTypes = " .
                                  showsPrec d (getField @"pObjectEntryTypes" x) .
                                    showString ", " .
                                      showString "pObjectEntryCounts = " .
                                        showsPrec d (getField @"pObjectEntryCounts" x) .
                                          showString ", " .
                                            showString "pObjectEntryUsageFlags = " .
                                              showsPrec d (getField @"pObjectEntryUsageFlags" x) .
                                                showString ", " .
                                                  showString "maxUniformBuffersPerDescriptor = " .
                                                    showsPrec d
                                                      (getField @"maxUniformBuffersPerDescriptor" x)
                                                      .
                                                      showString ", " .
                                                        showString
                                                          "maxStorageBuffersPerDescriptor = "
                                                          .
                                                          showsPrec d
                                                            (getField
                                                               @"maxStorageBuffersPerDescriptor"
                                                               x)
                                                            .
                                                            showString ", " .
                                                              showString
                                                                "maxStorageImagesPerDescriptor = "
                                                                .
                                                                showsPrec d
                                                                  (getField
                                                                     @"maxStorageImagesPerDescriptor"
                                                                     x)
                                                                  .
                                                                  showString ", " .
                                                                    showString
                                                                      "maxSampledImagesPerDescriptor = "
                                                                      .
                                                                      showsPrec d
                                                                        (getField
                                                                           @"maxSampledImagesPerDescriptor"
                                                                           x)
                                                                        .
                                                                        showString ", " .
                                                                          showString
                                                                            "maxPipelineLayouts = "
                                                                            .
                                                                            showsPrec d
                                                                              (getField
                                                                                 @"maxPipelineLayouts"
                                                                                 x)
                                                                              . showChar '}'

-- | > typedef struct VkObjectTableDescriptorSetEntryNVX {
--   >     VkObjectEntryTypeNVX         type;
--   >     VkObjectEntryUsageFlagsNVX   flags;
--   >     VkPipelineLayout             pipelineLayout;
--   >     VkDescriptorSet              descriptorSet;
--   > } VkObjectTableDescriptorSetEntryNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableDescriptorSetEntryNVX VkObjectTableDescriptorSetEntryNVX registry at www.khronos.org>
data VkObjectTableDescriptorSetEntryNVX = VkObjectTableDescriptorSetEntryNVX# Addr#
                                                                              ByteArray#

instance Eq VkObjectTableDescriptorSetEntryNVX where
        (VkObjectTableDescriptorSetEntryNVX# a _) ==
          x@(VkObjectTableDescriptorSetEntryNVX# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkObjectTableDescriptorSetEntryNVX where
        (VkObjectTableDescriptorSetEntryNVX# a _) `compare`
          x@(VkObjectTableDescriptorSetEntryNVX# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkObjectTableDescriptorSetEntryNVX where
        sizeOf ~_ = (24)
{-# LINE 618 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 622 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkObjectTableDescriptorSetEntryNVX where
        unsafeAddr (VkObjectTableDescriptorSetEntryNVX# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkObjectTableDescriptorSetEntryNVX# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkObjectTableDescriptorSetEntryNVX#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkObjectTableDescriptorSetEntryNVX where
        type StructFields VkObjectTableDescriptorSetEntryNVX =
             '["type", "flags", "pipelineLayout", "descriptorSet"] -- ' closing tick for hsc2hs
        type CUnionType VkObjectTableDescriptorSetEntryNVX = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkObjectTableDescriptorSetEntryNVX = 'False -- ' closing tick for hsc2hs
        type StructExtends VkObjectTableDescriptorSetEntryNVX = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "type" VkObjectTableDescriptorSetEntryNVX where
        type FieldType "type" VkObjectTableDescriptorSetEntryNVX =
             VkObjectEntryTypeNVX
        type FieldOptional "type" VkObjectTableDescriptorSetEntryNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "type" VkObjectTableDescriptorSetEntryNVX =
             (0)
{-# LINE 660 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "type" VkObjectTableDescriptorSetEntryNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 669 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "type" VkObjectTableDescriptorSetEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 676 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 680 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "type" VkObjectTableDescriptorSetEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 686 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkObjectTableDescriptorSetEntryNVX where
        type FieldType "flags" VkObjectTableDescriptorSetEntryNVX =
             VkObjectEntryUsageFlagsNVX
        type FieldOptional "flags" VkObjectTableDescriptorSetEntryNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkObjectTableDescriptorSetEntryNVX =
             (4)
{-# LINE 695 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "flags" VkObjectTableDescriptorSetEntryNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (4)
{-# LINE 704 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkObjectTableDescriptorSetEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 711 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (4)
{-# LINE 715 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkObjectTableDescriptorSetEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 721 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pipelineLayout" VkObjectTableDescriptorSetEntryNVX where
        type FieldType "pipelineLayout" VkObjectTableDescriptorSetEntryNVX
             = VkPipelineLayout
        type FieldOptional "pipelineLayout"
               VkObjectTableDescriptorSetEntryNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pipelineLayout"
               VkObjectTableDescriptorSetEntryNVX
             =
             (8)
{-# LINE 733 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "pipelineLayout"
               VkObjectTableDescriptorSetEntryNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 743 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pipelineLayout" VkObjectTableDescriptorSetEntryNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 751 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 755 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pipelineLayout" VkObjectTableDescriptorSetEntryNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 762 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "descriptorSet" VkObjectTableDescriptorSetEntryNVX where
        type FieldType "descriptorSet" VkObjectTableDescriptorSetEntryNVX =
             VkDescriptorSet
        type FieldOptional "descriptorSet"
               VkObjectTableDescriptorSetEntryNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "descriptorSet" VkObjectTableDescriptorSetEntryNVX
             =
             (16)
{-# LINE 773 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "descriptorSet"
               VkObjectTableDescriptorSetEntryNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 783 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "descriptorSet" VkObjectTableDescriptorSetEntryNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 791 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 795 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "descriptorSet" VkObjectTableDescriptorSetEntryNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 802 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance Show VkObjectTableDescriptorSetEntryNVX where
        showsPrec d x
          = showString "VkObjectTableDescriptorSetEntryNVX {" .
              showString "type = " .
                showsPrec d (getField @"type" x) .
                  showString ", " .
                    showString "flags = " .
                      showsPrec d (getField @"flags" x) .
                        showString ", " .
                          showString "pipelineLayout = " .
                            showsPrec d (getField @"pipelineLayout" x) .
                              showString ", " .
                                showString "descriptorSet = " .
                                  showsPrec d (getField @"descriptorSet" x) . showChar '}'

-- | > typedef struct VkObjectTableEntryNVX {
--   >     VkObjectEntryTypeNVX         type;
--   >     VkObjectEntryUsageFlagsNVX   flags;
--   > } VkObjectTableEntryNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableEntryNVX VkObjectTableEntryNVX registry at www.khronos.org>
data VkObjectTableEntryNVX = VkObjectTableEntryNVX# Addr#
                                                    ByteArray#

instance Eq VkObjectTableEntryNVX where
        (VkObjectTableEntryNVX# a _) == x@(VkObjectTableEntryNVX# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkObjectTableEntryNVX where
        (VkObjectTableEntryNVX# a _) `compare`
          x@(VkObjectTableEntryNVX# b _) = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkObjectTableEntryNVX where
        sizeOf ~_ = (8)
{-# LINE 841 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_ = (4)
{-# LINE 844 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkObjectTableEntryNVX where
        unsafeAddr (VkObjectTableEntryNVX# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkObjectTableEntryNVX# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkObjectTableEntryNVX# (plusAddr# (byteArrayContents# b) off) b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkObjectTableEntryNVX where
        type StructFields VkObjectTableEntryNVX = '["type", "flags"] -- ' closing tick for hsc2hs
        type CUnionType VkObjectTableEntryNVX = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkObjectTableEntryNVX = 'False -- ' closing tick for hsc2hs
        type StructExtends VkObjectTableEntryNVX = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-} HasField "type" VkObjectTableEntryNVX
         where
        type FieldType "type" VkObjectTableEntryNVX = VkObjectEntryTypeNVX
        type FieldOptional "type" VkObjectTableEntryNVX = 'False -- ' closing tick for hsc2hs
        type FieldOffset "type" VkObjectTableEntryNVX =
             (0)
{-# LINE 877 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "type" VkObjectTableEntryNVX = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (0)
{-# LINE 884 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "type" VkObjectTableEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 891 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 895 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "type" VkObjectTableEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 901 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-} HasField "flags" VkObjectTableEntryNVX
         where
        type FieldType "flags" VkObjectTableEntryNVX =
             VkObjectEntryUsageFlagsNVX
        type FieldOptional "flags" VkObjectTableEntryNVX = 'False -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkObjectTableEntryNVX =
             (4)
{-# LINE 909 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "flags" VkObjectTableEntryNVX = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset = (4)
{-# LINE 916 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkObjectTableEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 923 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (4)
{-# LINE 927 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkObjectTableEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 933 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance Show VkObjectTableEntryNVX where
        showsPrec d x
          = showString "VkObjectTableEntryNVX {" .
              showString "type = " .
                showsPrec d (getField @"type" x) .
                  showString ", " .
                    showString "flags = " .
                      showsPrec d (getField @"flags" x) . showChar '}'

-- | > typedef struct VkObjectTableIndexBufferEntryNVX {
--   >     VkObjectEntryTypeNVX         type;
--   >     VkObjectEntryUsageFlagsNVX   flags;
--   >     VkBuffer                     buffer;
--   >     VkIndexType                  indexType;
--   > } VkObjectTableIndexBufferEntryNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableIndexBufferEntryNVX VkObjectTableIndexBufferEntryNVX registry at www.khronos.org>
data VkObjectTableIndexBufferEntryNVX = VkObjectTableIndexBufferEntryNVX# Addr#
                                                                          ByteArray#

instance Eq VkObjectTableIndexBufferEntryNVX where
        (VkObjectTableIndexBufferEntryNVX# a _) ==
          x@(VkObjectTableIndexBufferEntryNVX# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkObjectTableIndexBufferEntryNVX where
        (VkObjectTableIndexBufferEntryNVX# a _) `compare`
          x@(VkObjectTableIndexBufferEntryNVX# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkObjectTableIndexBufferEntryNVX where
        sizeOf ~_ = (24)
{-# LINE 970 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 974 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkObjectTableIndexBufferEntryNVX where
        unsafeAddr (VkObjectTableIndexBufferEntryNVX# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkObjectTableIndexBufferEntryNVX# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkObjectTableIndexBufferEntryNVX#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkObjectTableIndexBufferEntryNVX where
        type StructFields VkObjectTableIndexBufferEntryNVX =
             '["type", "flags", "buffer", "indexType"] -- ' closing tick for hsc2hs
        type CUnionType VkObjectTableIndexBufferEntryNVX = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkObjectTableIndexBufferEntryNVX = 'False -- ' closing tick for hsc2hs
        type StructExtends VkObjectTableIndexBufferEntryNVX = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "type" VkObjectTableIndexBufferEntryNVX where
        type FieldType "type" VkObjectTableIndexBufferEntryNVX =
             VkObjectEntryTypeNVX
        type FieldOptional "type" VkObjectTableIndexBufferEntryNVX = 'False -- ' closing tick for hsc2hs
        type FieldOffset "type" VkObjectTableIndexBufferEntryNVX =
             (0)
{-# LINE 1011 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "type" VkObjectTableIndexBufferEntryNVX = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 1019 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "type" VkObjectTableIndexBufferEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1026 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 1030 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "type" VkObjectTableIndexBufferEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1036 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkObjectTableIndexBufferEntryNVX where
        type FieldType "flags" VkObjectTableIndexBufferEntryNVX =
             VkObjectEntryUsageFlagsNVX
        type FieldOptional "flags" VkObjectTableIndexBufferEntryNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkObjectTableIndexBufferEntryNVX =
             (4)
{-# LINE 1045 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "flags" VkObjectTableIndexBufferEntryNVX = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (4)
{-# LINE 1053 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkObjectTableIndexBufferEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 1060 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (4)
{-# LINE 1064 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkObjectTableIndexBufferEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 1070 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "buffer" VkObjectTableIndexBufferEntryNVX where
        type FieldType "buffer" VkObjectTableIndexBufferEntryNVX = VkBuffer
        type FieldOptional "buffer" VkObjectTableIndexBufferEntryNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "buffer" VkObjectTableIndexBufferEntryNVX =
             (8)
{-# LINE 1078 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "buffer" VkObjectTableIndexBufferEntryNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 1087 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "buffer" VkObjectTableIndexBufferEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 1094 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 1098 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "buffer" VkObjectTableIndexBufferEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 1104 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "indexType" VkObjectTableIndexBufferEntryNVX where
        type FieldType "indexType" VkObjectTableIndexBufferEntryNVX =
             VkIndexType
        type FieldOptional "indexType" VkObjectTableIndexBufferEntryNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "indexType" VkObjectTableIndexBufferEntryNVX =
             (16)
{-# LINE 1113 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "indexType" VkObjectTableIndexBufferEntryNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 1122 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "indexType" VkObjectTableIndexBufferEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1129 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 1133 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "indexType" VkObjectTableIndexBufferEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1139 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance Show VkObjectTableIndexBufferEntryNVX where
        showsPrec d x
          = showString "VkObjectTableIndexBufferEntryNVX {" .
              showString "type = " .
                showsPrec d (getField @"type" x) .
                  showString ", " .
                    showString "flags = " .
                      showsPrec d (getField @"flags" x) .
                        showString ", " .
                          showString "buffer = " .
                            showsPrec d (getField @"buffer" x) .
                              showString ", " .
                                showString "indexType = " .
                                  showsPrec d (getField @"indexType" x) . showChar '}'

-- | > typedef struct VkObjectTablePipelineEntryNVX {
--   >     VkObjectEntryTypeNVX         type;
--   >     VkObjectEntryUsageFlagsNVX   flags;
--   >     VkPipeline                   pipeline;
--   > } VkObjectTablePipelineEntryNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTablePipelineEntryNVX VkObjectTablePipelineEntryNVX registry at www.khronos.org>
data VkObjectTablePipelineEntryNVX = VkObjectTablePipelineEntryNVX# Addr#
                                                                    ByteArray#

instance Eq VkObjectTablePipelineEntryNVX where
        (VkObjectTablePipelineEntryNVX# a _) ==
          x@(VkObjectTablePipelineEntryNVX# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkObjectTablePipelineEntryNVX where
        (VkObjectTablePipelineEntryNVX# a _) `compare`
          x@(VkObjectTablePipelineEntryNVX# b _) = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkObjectTablePipelineEntryNVX where
        sizeOf ~_ = (16)
{-# LINE 1180 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 1184 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkObjectTablePipelineEntryNVX where
        unsafeAddr (VkObjectTablePipelineEntryNVX# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkObjectTablePipelineEntryNVX# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkObjectTablePipelineEntryNVX#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkObjectTablePipelineEntryNVX where
        type StructFields VkObjectTablePipelineEntryNVX =
             '["type", "flags", "pipeline"] -- ' closing tick for hsc2hs
        type CUnionType VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs
        type StructExtends VkObjectTablePipelineEntryNVX = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "type" VkObjectTablePipelineEntryNVX where
        type FieldType "type" VkObjectTablePipelineEntryNVX =
             VkObjectEntryTypeNVX
        type FieldOptional "type" VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs
        type FieldOffset "type" VkObjectTablePipelineEntryNVX =
             (0)
{-# LINE 1221 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "type" VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 1229 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "type" VkObjectTablePipelineEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1236 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 1240 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "type" VkObjectTablePipelineEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1246 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkObjectTablePipelineEntryNVX where
        type FieldType "flags" VkObjectTablePipelineEntryNVX =
             VkObjectEntryUsageFlagsNVX
        type FieldOptional "flags" VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkObjectTablePipelineEntryNVX =
             (4)
{-# LINE 1254 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "flags" VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (4)
{-# LINE 1262 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkObjectTablePipelineEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 1269 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (4)
{-# LINE 1273 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkObjectTablePipelineEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 1279 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pipeline" VkObjectTablePipelineEntryNVX where
        type FieldType "pipeline" VkObjectTablePipelineEntryNVX =
             VkPipeline
        type FieldOptional "pipeline" VkObjectTablePipelineEntryNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "pipeline" VkObjectTablePipelineEntryNVX =
             (8)
{-# LINE 1288 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "pipeline" VkObjectTablePipelineEntryNVX = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 1296 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pipeline" VkObjectTablePipelineEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 1303 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 1307 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pipeline" VkObjectTablePipelineEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 1313 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance Show VkObjectTablePipelineEntryNVX where
        showsPrec d x
          = showString "VkObjectTablePipelineEntryNVX {" .
              showString "type = " .
                showsPrec d (getField @"type" x) .
                  showString ", " .
                    showString "flags = " .
                      showsPrec d (getField @"flags" x) .
                        showString ", " .
                          showString "pipeline = " .
                            showsPrec d (getField @"pipeline" x) . showChar '}'

-- | > typedef struct VkObjectTablePushConstantEntryNVX {
--   >     VkObjectEntryTypeNVX         type;
--   >     VkObjectEntryUsageFlagsNVX   flags;
--   >     VkPipelineLayout             pipelineLayout;
--   >     VkShaderStageFlags           stageFlags;
--   > } VkObjectTablePushConstantEntryNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTablePushConstantEntryNVX VkObjectTablePushConstantEntryNVX registry at www.khronos.org>
data VkObjectTablePushConstantEntryNVX = VkObjectTablePushConstantEntryNVX# Addr#
                                                                            ByteArray#

instance Eq VkObjectTablePushConstantEntryNVX where
        (VkObjectTablePushConstantEntryNVX# a _) ==
          x@(VkObjectTablePushConstantEntryNVX# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkObjectTablePushConstantEntryNVX where
        (VkObjectTablePushConstantEntryNVX# a _) `compare`
          x@(VkObjectTablePushConstantEntryNVX# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkObjectTablePushConstantEntryNVX where
        sizeOf ~_ = (24)
{-# LINE 1353 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 1357 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkObjectTablePushConstantEntryNVX where
        unsafeAddr (VkObjectTablePushConstantEntryNVX# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkObjectTablePushConstantEntryNVX# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkObjectTablePushConstantEntryNVX#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkObjectTablePushConstantEntryNVX where
        type StructFields VkObjectTablePushConstantEntryNVX =
             '["type", "flags", "pipelineLayout", "stageFlags"] -- ' closing tick for hsc2hs
        type CUnionType VkObjectTablePushConstantEntryNVX = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkObjectTablePushConstantEntryNVX = 'False -- ' closing tick for hsc2hs
        type StructExtends VkObjectTablePushConstantEntryNVX = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "type" VkObjectTablePushConstantEntryNVX where
        type FieldType "type" VkObjectTablePushConstantEntryNVX =
             VkObjectEntryTypeNVX
        type FieldOptional "type" VkObjectTablePushConstantEntryNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "type" VkObjectTablePushConstantEntryNVX =
             (0)
{-# LINE 1395 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "type" VkObjectTablePushConstantEntryNVX = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 1403 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "type" VkObjectTablePushConstantEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1410 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 1414 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "type" VkObjectTablePushConstantEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1420 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkObjectTablePushConstantEntryNVX where
        type FieldType "flags" VkObjectTablePushConstantEntryNVX =
             VkObjectEntryUsageFlagsNVX
        type FieldOptional "flags" VkObjectTablePushConstantEntryNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkObjectTablePushConstantEntryNVX =
             (4)
{-# LINE 1429 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "flags" VkObjectTablePushConstantEntryNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (4)
{-# LINE 1438 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkObjectTablePushConstantEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 1445 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (4)
{-# LINE 1449 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkObjectTablePushConstantEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 1455 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "pipelineLayout" VkObjectTablePushConstantEntryNVX where
        type FieldType "pipelineLayout" VkObjectTablePushConstantEntryNVX =
             VkPipelineLayout
        type FieldOptional "pipelineLayout"
               VkObjectTablePushConstantEntryNVX
             = 'False -- ' closing tick for hsc2hs
        type FieldOffset "pipelineLayout" VkObjectTablePushConstantEntryNVX
             =
             (8)
{-# LINE 1466 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "pipelineLayout"
               VkObjectTablePushConstantEntryNVX
             = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 1476 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "pipelineLayout" VkObjectTablePushConstantEntryNVX
         where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 1484 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 1488 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "pipelineLayout" VkObjectTablePushConstantEntryNVX
         where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 1495 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "stageFlags" VkObjectTablePushConstantEntryNVX where
        type FieldType "stageFlags" VkObjectTablePushConstantEntryNVX =
             VkShaderStageFlags
        type FieldOptional "stageFlags" VkObjectTablePushConstantEntryNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "stageFlags" VkObjectTablePushConstantEntryNVX =
             (16)
{-# LINE 1504 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "stageFlags" VkObjectTablePushConstantEntryNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (16)
{-# LINE 1513 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "stageFlags" VkObjectTablePushConstantEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (16))
{-# LINE 1520 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (16)
{-# LINE 1524 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "stageFlags" VkObjectTablePushConstantEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (16)
{-# LINE 1530 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance Show VkObjectTablePushConstantEntryNVX where
        showsPrec d x
          = showString "VkObjectTablePushConstantEntryNVX {" .
              showString "type = " .
                showsPrec d (getField @"type" x) .
                  showString ", " .
                    showString "flags = " .
                      showsPrec d (getField @"flags" x) .
                        showString ", " .
                          showString "pipelineLayout = " .
                            showsPrec d (getField @"pipelineLayout" x) .
                              showString ", " .
                                showString "stageFlags = " .
                                  showsPrec d (getField @"stageFlags" x) . showChar '}'

-- | > typedef struct VkObjectTableVertexBufferEntryNVX {
--   >     VkObjectEntryTypeNVX         type;
--   >     VkObjectEntryUsageFlagsNVX   flags;
--   >     VkBuffer                     buffer;
--   > } VkObjectTableVertexBufferEntryNVX;
--
--   <https://www.khronos.org/registry/vulkan/specs/1.1-extensions/html/vkspec.html#VkObjectTableVertexBufferEntryNVX VkObjectTableVertexBufferEntryNVX registry at www.khronos.org>
data VkObjectTableVertexBufferEntryNVX = VkObjectTableVertexBufferEntryNVX# Addr#
                                                                            ByteArray#

instance Eq VkObjectTableVertexBufferEntryNVX where
        (VkObjectTableVertexBufferEntryNVX# a _) ==
          x@(VkObjectTableVertexBufferEntryNVX# b _)
          = EQ == cmpBytes# (sizeOf x) a b

        {-# INLINE (==) #-}

instance Ord VkObjectTableVertexBufferEntryNVX where
        (VkObjectTableVertexBufferEntryNVX# a _) `compare`
          x@(VkObjectTableVertexBufferEntryNVX# b _)
          = cmpBytes# (sizeOf x) a b

        {-# INLINE compare #-}

instance Storable VkObjectTableVertexBufferEntryNVX where
        sizeOf ~_ = (16)
{-# LINE 1572 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE sizeOf #-}
        alignment ~_
          = (8)
{-# LINE 1576 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE alignment #-}
        peek = peekVkData#

        {-# INLINE peek #-}
        poke = pokeVkData#

        {-# INLINE poke #-}

instance VulkanMarshalPrim VkObjectTableVertexBufferEntryNVX where
        unsafeAddr (VkObjectTableVertexBufferEntryNVX# a _) = a

        {-# INLINE unsafeAddr #-}
        unsafeByteArray (VkObjectTableVertexBufferEntryNVX# _ b) = b

        {-# INLINE unsafeByteArray #-}
        unsafeFromByteArrayOffset off b
          = VkObjectTableVertexBufferEntryNVX#
              (plusAddr# (byteArrayContents# b) off)
              b

        {-# INLINE unsafeFromByteArrayOffset #-}

instance VulkanMarshal VkObjectTableVertexBufferEntryNVX where
        type StructFields VkObjectTableVertexBufferEntryNVX =
             '["type", "flags", "buffer"] -- ' closing tick for hsc2hs
        type CUnionType VkObjectTableVertexBufferEntryNVX = 'False -- ' closing tick for hsc2hs
        type ReturnedOnly VkObjectTableVertexBufferEntryNVX = 'False -- ' closing tick for hsc2hs
        type StructExtends VkObjectTableVertexBufferEntryNVX = '[] -- ' closing tick for hsc2hs

instance {-# OVERLAPPING #-}
         HasField "type" VkObjectTableVertexBufferEntryNVX where
        type FieldType "type" VkObjectTableVertexBufferEntryNVX =
             VkObjectEntryTypeNVX
        type FieldOptional "type" VkObjectTableVertexBufferEntryNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "type" VkObjectTableVertexBufferEntryNVX =
             (0)
{-# LINE 1614 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "type" VkObjectTableVertexBufferEntryNVX = 'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (0)
{-# LINE 1622 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "type" VkObjectTableVertexBufferEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (0))
{-# LINE 1629 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (0)
{-# LINE 1633 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "type" VkObjectTableVertexBufferEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (0)
{-# LINE 1639 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "flags" VkObjectTableVertexBufferEntryNVX where
        type FieldType "flags" VkObjectTableVertexBufferEntryNVX =
             VkObjectEntryUsageFlagsNVX
        type FieldOptional "flags" VkObjectTableVertexBufferEntryNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "flags" VkObjectTableVertexBufferEntryNVX =
             (4)
{-# LINE 1648 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "flags" VkObjectTableVertexBufferEntryNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (4)
{-# LINE 1657 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "flags" VkObjectTableVertexBufferEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (4))
{-# LINE 1664 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (4)
{-# LINE 1668 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "flags" VkObjectTableVertexBufferEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (4)
{-# LINE 1674 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         HasField "buffer" VkObjectTableVertexBufferEntryNVX where
        type FieldType "buffer" VkObjectTableVertexBufferEntryNVX =
             VkBuffer
        type FieldOptional "buffer" VkObjectTableVertexBufferEntryNVX =
             'False -- ' closing tick for hsc2hs
        type FieldOffset "buffer" VkObjectTableVertexBufferEntryNVX =
             (8)
{-# LINE 1683 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}
        type FieldIsArray "buffer" VkObjectTableVertexBufferEntryNVX =
             'False -- ' closing tick for hsc2hs

        {-# INLINE fieldOptional #-}
        fieldOptional = False

        {-# INLINE fieldOffset #-}
        fieldOffset
          = (8)
{-# LINE 1692 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanReadField "buffer" VkObjectTableVertexBufferEntryNVX where
        {-# NOINLINE getField #-}
        getField x
          = unsafeDupablePerformIO
              (peekByteOff (unsafePtr x) (8))
{-# LINE 1699 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

        {-# INLINE readField #-}
        readField p
          = peekByteOff p (8)
{-# LINE 1703 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance {-# OVERLAPPING #-}
         CanWriteField "buffer" VkObjectTableVertexBufferEntryNVX where
        {-# INLINE writeField #-}
        writeField p
          = pokeByteOff p (8)
{-# LINE 1709 "src-gen/Graphics/Vulkan/Types/Struct/ObjectTable.hsc" #-}

instance Show VkObjectTableVertexBufferEntryNVX where
        showsPrec d x
          = showString "VkObjectTableVertexBufferEntryNVX {" .
              showString "type = " .
                showsPrec d (getField @"type" x) .
                  showString ", " .
                    showString "flags = " .
                      showsPrec d (getField @"flags" x) .
                        showString ", " .
                          showString "buffer = " .
                            showsPrec d (getField @"buffer" x) . showChar '}'