-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.ARB.MatrixPalette (
  -- * Extension Support
    gl_ARB_matrix_palette

  -- * GL_ARB_matrix_palette
  , glCurrentPaletteMatrixARB
  , glMatrixIndexPointerARB
  , glMatrixIndexubvARB
  , glMatrixIndexuivARB
  , glMatrixIndexusvARB
  , pattern GL_CURRENT_MATRIX_INDEX_ARB
  , pattern GL_CURRENT_PALETTE_MATRIX_ARB
  , pattern GL_MATRIX_INDEX_ARRAY_ARB
  , pattern GL_MATRIX_INDEX_ARRAY_POINTER_ARB
  , pattern GL_MATRIX_INDEX_ARRAY_SIZE_ARB
  , pattern GL_MATRIX_INDEX_ARRAY_STRIDE_ARB
  , pattern GL_MATRIX_INDEX_ARRAY_TYPE_ARB
  , pattern GL_MATRIX_PALETTE_ARB
  , pattern GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB
  , pattern GL_MAX_PALETTE_MATRICES_ARB
) 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/ARB/matrix_palette.txt GL_ARB_matrix_palette> extension is available.

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

-- | Usage: @'glCurrentPaletteMatrixARB' index@


glCurrentPaletteMatrixARB :: MonadIO m => GLint -> m ()
glCurrentPaletteMatrixARB :: GLint -> m ()
glCurrentPaletteMatrixARB = FunPtr (GLint -> IO ()) -> GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLint -> IO ()) -> GLint -> m ()
ffiintIOV FunPtr (GLint -> IO ())
glCurrentPaletteMatrixARBFunPtr

glCurrentPaletteMatrixARBFunPtr :: FunPtr (GLint -> IO ())
glCurrentPaletteMatrixARBFunPtr :: FunPtr (GLint -> IO ())
glCurrentPaletteMatrixARBFunPtr = IO (FunPtr (GLint -> IO ())) -> FunPtr (GLint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glCurrentPaletteMatrixARB")

{-# NOINLINE glCurrentPaletteMatrixARBFunPtr #-}

-- | Usage: @'glMatrixIndexPointerARB' size type stride pointer@
--
-- The parameter @type@ is a @MatrixIndexPointerTypeARB@.
--
-- The length of @pointer@ should be @COMPSIZE(size,type,stride)@.


glMatrixIndexPointerARB :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glMatrixIndexPointerARB :: GLint -> GLenum -> GLint -> Ptr () -> m ()
glMatrixIndexPointerARB = FunPtr (GLint -> GLenum -> GLint -> Ptr () -> IO ())
-> GLint -> GLenum -> GLint -> Ptr () -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLint -> GLenum -> GLint -> Ptr () -> IO ())
-> GLint -> GLenum -> GLint -> Ptr () -> m ()
ffiintenumsizeiPtrVIOV FunPtr (GLint -> GLenum -> GLint -> Ptr () -> IO ())
glMatrixIndexPointerARBFunPtr

glMatrixIndexPointerARBFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glMatrixIndexPointerARBFunPtr :: FunPtr (GLint -> GLenum -> GLint -> Ptr () -> IO ())
glMatrixIndexPointerARBFunPtr = IO (FunPtr (GLint -> GLenum -> GLint -> Ptr () -> IO ()))
-> FunPtr (GLint -> GLenum -> GLint -> Ptr () -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLint -> GLenum -> GLint -> Ptr () -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glMatrixIndexPointerARB")

{-# NOINLINE glMatrixIndexPointerARBFunPtr #-}

-- | Usage: @'glMatrixIndexubvARB' size indices@
--
-- The length of @indices@ should be @size@.


glMatrixIndexubvARB :: MonadIO m => GLint -> Ptr GLubyte -> m ()
glMatrixIndexubvARB :: GLint -> Ptr GLubyte -> m ()
glMatrixIndexubvARB = FunPtr (GLint -> Ptr GLubyte -> IO ())
-> GLint -> Ptr GLubyte -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLint -> Ptr GLubyte -> IO ())
-> GLint -> Ptr GLubyte -> m ()
ffiintPtrubyteIOV FunPtr (GLint -> Ptr GLubyte -> IO ())
glMatrixIndexubvARBFunPtr

glMatrixIndexubvARBFunPtr :: FunPtr (GLint -> Ptr GLubyte -> IO ())
glMatrixIndexubvARBFunPtr :: FunPtr (GLint -> Ptr GLubyte -> IO ())
glMatrixIndexubvARBFunPtr = IO (FunPtr (GLint -> Ptr GLubyte -> IO ()))
-> FunPtr (GLint -> Ptr GLubyte -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLint -> Ptr GLubyte -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glMatrixIndexubvARB")

{-# NOINLINE glMatrixIndexubvARBFunPtr #-}

-- | Usage: @'glMatrixIndexuivARB' size indices@
--
-- The length of @indices@ should be @size@.


glMatrixIndexuivARB :: MonadIO m => GLint -> Ptr GLuint -> m ()
glMatrixIndexuivARB :: GLint -> Ptr GLenum -> m ()
glMatrixIndexuivARB = FunPtr (GLint -> Ptr GLenum -> IO ())
-> GLint -> Ptr GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLint -> Ptr GLenum -> IO ())
-> GLint -> Ptr GLenum -> m ()
ffiintPtruintIOV FunPtr (GLint -> Ptr GLenum -> IO ())
glMatrixIndexuivARBFunPtr

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

{-# NOINLINE glMatrixIndexuivARBFunPtr #-}

-- | Usage: @'glMatrixIndexusvARB' size indices@
--
-- The length of @indices@ should be @size@.


glMatrixIndexusvARB :: MonadIO m => GLint -> Ptr GLushort -> m ()
glMatrixIndexusvARB :: GLint -> Ptr GLushort -> m ()
glMatrixIndexusvARB = FunPtr (GLint -> Ptr GLushort -> IO ())
-> GLint -> Ptr GLushort -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLint -> Ptr GLushort -> IO ())
-> GLint -> Ptr GLushort -> m ()
ffiintPtrushortIOV FunPtr (GLint -> Ptr GLushort -> IO ())
glMatrixIndexusvARBFunPtr

glMatrixIndexusvARBFunPtr :: FunPtr (GLint -> Ptr GLushort -> IO ())
glMatrixIndexusvARBFunPtr :: FunPtr (GLint -> Ptr GLushort -> IO ())
glMatrixIndexusvARBFunPtr = IO (FunPtr (GLint -> Ptr GLushort -> IO ()))
-> FunPtr (GLint -> Ptr GLushort -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLint -> Ptr GLushort -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glMatrixIndexusvARB")

{-# NOINLINE glMatrixIndexusvARBFunPtr #-}

pattern $bGL_CURRENT_MATRIX_INDEX_ARB :: a
$mGL_CURRENT_MATRIX_INDEX_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_CURRENT_MATRIX_INDEX_ARB = 0x8845

pattern $bGL_CURRENT_PALETTE_MATRIX_ARB :: a
$mGL_CURRENT_PALETTE_MATRIX_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_CURRENT_PALETTE_MATRIX_ARB = 0x8843

pattern $bGL_MATRIX_INDEX_ARRAY_ARB :: a
$mGL_MATRIX_INDEX_ARRAY_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MATRIX_INDEX_ARRAY_ARB = 0x8844

pattern $bGL_MATRIX_INDEX_ARRAY_POINTER_ARB :: a
$mGL_MATRIX_INDEX_ARRAY_POINTER_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MATRIX_INDEX_ARRAY_POINTER_ARB = 0x8849

pattern $bGL_MATRIX_INDEX_ARRAY_SIZE_ARB :: a
$mGL_MATRIX_INDEX_ARRAY_SIZE_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MATRIX_INDEX_ARRAY_SIZE_ARB = 0x8846

pattern $bGL_MATRIX_INDEX_ARRAY_STRIDE_ARB :: a
$mGL_MATRIX_INDEX_ARRAY_STRIDE_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MATRIX_INDEX_ARRAY_STRIDE_ARB = 0x8848

pattern $bGL_MATRIX_INDEX_ARRAY_TYPE_ARB :: a
$mGL_MATRIX_INDEX_ARRAY_TYPE_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MATRIX_INDEX_ARRAY_TYPE_ARB = 0x8847

pattern $bGL_MATRIX_PALETTE_ARB :: a
$mGL_MATRIX_PALETTE_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MATRIX_PALETTE_ARB = 0x8840

pattern $bGL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB :: a
$mGL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_MATRIX_PALETTE_STACK_DEPTH_ARB = 0x8841

pattern $bGL_MAX_PALETTE_MATRICES_ARB :: a
$mGL_MAX_PALETTE_MATRICES_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_PALETTE_MATRICES_ARB = 0x8842