-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.AMD.NameGenDelete (
  -- * Extension Support
    gl_AMD_name_gen_delete

  -- * GL_AMD_name_gen_delete
  , glDeleteNamesAMD
  , glGenNamesAMD
  , glIsNameAMD
  , pattern GL_DATA_BUFFER_AMD
  , pattern GL_PERFORMANCE_MONITOR_AMD
  , pattern GL_QUERY_OBJECT_AMD
  , pattern GL_SAMPLER_OBJECT_AMD
  , pattern GL_VERTEX_ARRAY_OBJECT_AMD
) where

import Control.Monad.IO.Class
import Data.Set
import Foreign.Ptr
import Graphics.GL.Internal.FFI
import Graphics.GL.Internal.Proc
import Graphics.GL.Types
import System.IO.Unsafe

-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/AMD/name_gen_delete.txt GL_AMD_name_gen_delete> extension is available.

gl_AMD_name_gen_delete :: Bool
gl_AMD_name_gen_delete :: Bool
gl_AMD_name_gen_delete = [Char] -> Set [Char] -> Bool
forall a. Ord a => a -> Set a -> Bool
member "GL_AMD_name_gen_delete" Set [Char]
extensions
{-# NOINLINE gl_AMD_name_gen_delete #-}

-- | Usage: @'glDeleteNamesAMD' identifier num names@
--
-- The length of @names@ should be @num@.


glDeleteNamesAMD :: MonadIO m => GLenum -> GLuint -> Ptr GLuint -> m ()
glDeleteNamesAMD :: GLenum -> GLenum -> Ptr GLenum -> m ()
glDeleteNamesAMD = FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ())
-> GLenum -> GLenum -> Ptr GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ())
-> GLenum -> GLenum -> Ptr GLenum -> m ()
ffienumuintPtruintIOV FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ())
glDeleteNamesAMDFunPtr

glDeleteNamesAMDFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLuint -> IO ())
glDeleteNamesAMDFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ())
glDeleteNamesAMDFunPtr = IO (FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ()))
-> FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glDeleteNamesAMD")

{-# NOINLINE glDeleteNamesAMDFunPtr #-}

-- | Usage: @'glGenNamesAMD' identifier num names@
--
-- The length of @names@ should be @num@.


glGenNamesAMD :: MonadIO m => GLenum -> GLuint -> Ptr GLuint -> m ()
glGenNamesAMD :: GLenum -> GLenum -> Ptr GLenum -> m ()
glGenNamesAMD = FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ())
-> GLenum -> GLenum -> Ptr GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ())
-> GLenum -> GLenum -> Ptr GLenum -> m ()
ffienumuintPtruintIOV FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ())
glGenNamesAMDFunPtr

glGenNamesAMDFunPtr :: FunPtr (GLenum -> GLuint -> Ptr GLuint -> IO ())
glGenNamesAMDFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ())
glGenNamesAMDFunPtr = IO (FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ()))
-> FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> GLenum -> Ptr GLenum -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGenNamesAMD")

{-# NOINLINE glGenNamesAMDFunPtr #-}

-- | Usage: @'glIsNameAMD' identifier name@


glIsNameAMD :: MonadIO m => GLenum -> GLuint -> m GLboolean
glIsNameAMD :: GLenum -> GLenum -> m GLboolean
glIsNameAMD = FunPtr (GLenum -> GLenum -> IO GLboolean)
-> GLenum -> GLenum -> m GLboolean
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> IO GLboolean)
-> GLenum -> GLenum -> m GLboolean
ffienumuintIOboolean FunPtr (GLenum -> GLenum -> IO GLboolean)
glIsNameAMDFunPtr

glIsNameAMDFunPtr :: FunPtr (GLenum -> GLuint -> IO GLboolean)
glIsNameAMDFunPtr :: FunPtr (GLenum -> GLenum -> IO GLboolean)
glIsNameAMDFunPtr = IO (FunPtr (GLenum -> GLenum -> IO GLboolean))
-> FunPtr (GLenum -> GLenum -> IO GLboolean)
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> GLenum -> IO GLboolean))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glIsNameAMD")

{-# NOINLINE glIsNameAMDFunPtr #-}

pattern $bGL_DATA_BUFFER_AMD :: a
$mGL_DATA_BUFFER_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DATA_BUFFER_AMD = 0x9151

pattern $bGL_PERFORMANCE_MONITOR_AMD :: a
$mGL_PERFORMANCE_MONITOR_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_PERFORMANCE_MONITOR_AMD = 0x9152

pattern $bGL_QUERY_OBJECT_AMD :: a
$mGL_QUERY_OBJECT_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_QUERY_OBJECT_AMD = 0x9153

pattern $bGL_SAMPLER_OBJECT_AMD :: a
$mGL_SAMPLER_OBJECT_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_SAMPLER_OBJECT_AMD = 0x9155

pattern $bGL_VERTEX_ARRAY_OBJECT_AMD :: a
$mGL_VERTEX_ARRAY_OBJECT_AMD :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_VERTEX_ARRAY_OBJECT_AMD = 0x9154