packages feed

sdl3-bindgen-sys-0.0.0.1: src/SDL3/Sys/Bindgen/Vulkan.hs

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE MagicHash #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE NoFieldSelectors #-}

module SDL3.Sys.Bindgen.Vulkan (
  SDL3.Sys.Bindgen.Vulkan.VkInstance (..),
  SDL3.Sys.Bindgen.Vulkan.VkInstance_T,
  SDL3.Sys.Bindgen.Vulkan.VkPhysicalDevice (..),
  SDL3.Sys.Bindgen.Vulkan.VkPhysicalDevice_T,
  SDL3.Sys.Bindgen.Vulkan.VkSurfaceKHR (..),
  SDL3.Sys.Bindgen.Vulkan.VkSurfaceKHR_T,
  SDL3.Sys.Bindgen.Vulkan.VkAllocationCallbacks,
)
where

import HsBindgen.Runtime.HasCField qualified as HasCField
import HsBindgen.Runtime.Marshal qualified as Marshal
import HsBindgen.Runtime.Support qualified as BG
import HsBindgen.Runtime.Support.CompatHasField qualified as BG.CompatHasField

-- | [C declaration]: @VkInstance@, defined at @SDL3\/SDL_vulkan.h 67:1@
newtype VkInstance = VkInstance
  { unwrap :: BG.Ptr VkInstance_T
  }
  deriving stock (BG.Generic, Eq, Ord, Show)
  deriving newtype
    ( BG.HasFFIType
    , BG.Storable
    , Marshal.ReadRaw
    , Marshal.StaticSize
    , Marshal.WriteRaw
    )

instance
  (ty ~ BG.Ptr VkInstance_T)
  => BG.CompatHasField.HasField "unwrap" VkInstance ty
  where
  hasField =
    \x0 ->
      ( \y1 ->
          VkInstance{unwrap = y1}
      , BG.getField @"unwrap" x0
      )

instance
  (ty ~ BG.Ptr VkInstance_T)
  => BG.HasField "unwrap" (BG.Ptr VkInstance) (BG.Ptr ty)
  where
  getField = HasCField.fromPtr (BG.Proxy @"unwrap")

instance HasCField.HasCField VkInstance "unwrap" where
  type
    CFieldType VkInstance "unwrap" =
      BG.Ptr VkInstance_T

  offset# = \_ -> \_ -> 0

-- | [C declaration]: @struct VkInstance_T@, defined at @SDL3\/SDL_vulkan.h 67:1@
data VkInstance_T

-- | [C declaration]: @VkPhysicalDevice@, defined at @SDL3\/SDL_vulkan.h 68:1@
newtype VkPhysicalDevice = VkPhysicalDevice
  { unwrap :: BG.Ptr VkPhysicalDevice_T
  }
  deriving stock (BG.Generic, Eq, Ord, Show)
  deriving newtype
    ( BG.HasFFIType
    , BG.Storable
    , Marshal.ReadRaw
    , Marshal.StaticSize
    , Marshal.WriteRaw
    )

instance
  (ty ~ BG.Ptr VkPhysicalDevice_T)
  => BG.CompatHasField.HasField "unwrap" VkPhysicalDevice ty
  where
  hasField =
    \x0 ->
      ( \y1 ->
          VkPhysicalDevice{unwrap = y1}
      , BG.getField @"unwrap" x0
      )

instance
  (ty ~ BG.Ptr VkPhysicalDevice_T)
  => BG.HasField "unwrap" (BG.Ptr VkPhysicalDevice) (BG.Ptr ty)
  where
  getField = HasCField.fromPtr (BG.Proxy @"unwrap")

instance HasCField.HasCField VkPhysicalDevice "unwrap" where
  type
    CFieldType VkPhysicalDevice "unwrap" =
      BG.Ptr VkPhysicalDevice_T

  offset# = \_ -> \_ -> 0

-- | [C declaration]: @struct VkPhysicalDevice_T@, defined at @SDL3\/SDL_vulkan.h 68:1@
data VkPhysicalDevice_T

-- | [C declaration]: @VkSurfaceKHR@, defined at @SDL3\/SDL_vulkan.h 69:1@
newtype VkSurfaceKHR = VkSurfaceKHR
  { unwrap :: BG.Ptr VkSurfaceKHR_T
  }
  deriving stock (BG.Generic, Eq, Ord, Show)
  deriving newtype
    ( BG.HasFFIType
    , BG.Storable
    , Marshal.ReadRaw
    , Marshal.StaticSize
    , Marshal.WriteRaw
    )

instance
  (ty ~ BG.Ptr VkSurfaceKHR_T)
  => BG.CompatHasField.HasField "unwrap" VkSurfaceKHR ty
  where
  hasField =
    \x0 ->
      ( \y1 ->
          VkSurfaceKHR{unwrap = y1}
      , BG.getField @"unwrap" x0
      )

instance
  (ty ~ BG.Ptr VkSurfaceKHR_T)
  => BG.HasField "unwrap" (BG.Ptr VkSurfaceKHR) (BG.Ptr ty)
  where
  getField = HasCField.fromPtr (BG.Proxy @"unwrap")

instance HasCField.HasCField VkSurfaceKHR "unwrap" where
  type
    CFieldType VkSurfaceKHR "unwrap" =
      BG.Ptr VkSurfaceKHR_T

  offset# = \_ -> \_ -> 0

-- | [C declaration]: @struct VkSurfaceKHR_T@, defined at @SDL3\/SDL_vulkan.h 69:1@
data VkSurfaceKHR_T

-- | [C declaration]: @struct VkAllocationCallbacks@, defined at @SDL3\/SDL_vulkan.h 70:8@
data VkAllocationCallbacks