-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.APPLE.VertexProgramEvaluators (
  -- * Extension Support
    gl_APPLE_vertex_program_evaluators

  -- * GL_APPLE_vertex_program_evaluators
  , glDisableVertexAttribAPPLE
  , glEnableVertexAttribAPPLE
  , glIsVertexAttribEnabledAPPLE
  , glMapVertexAttrib1dAPPLE
  , glMapVertexAttrib1fAPPLE
  , glMapVertexAttrib2dAPPLE
  , glMapVertexAttrib2fAPPLE
  , pattern GL_VERTEX_ATTRIB_MAP1_APPLE
  , pattern GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE
  , pattern GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE
  , pattern GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE
  , pattern GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE
  , pattern GL_VERTEX_ATTRIB_MAP2_APPLE
  , pattern GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE
  , pattern GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE
  , pattern GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE
  , pattern GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE
) where

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

gl_APPLE_vertex_program_evaluators :: Bool
gl_APPLE_vertex_program_evaluators = member "GL_APPLE_vertex_program_evaluators" extensions

glDisableVertexAttribAPPLE :: MonadIO m => GLuint -> GLenum -> m ()
glDisableVertexAttribAPPLE = ffiuintenumIOV glDisableVertexAttribAPPLEFunPtr

glDisableVertexAttribAPPLEFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glDisableVertexAttribAPPLEFunPtr = unsafePerformIO (getProcAddress "glDisableVertexAttribAPPLE")

{-# NOINLINE glDisableVertexAttribAPPLEFunPtr #-}

glEnableVertexAttribAPPLE :: MonadIO m => GLuint -> GLenum -> m ()
glEnableVertexAttribAPPLE = ffiuintenumIOV glEnableVertexAttribAPPLEFunPtr

glEnableVertexAttribAPPLEFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glEnableVertexAttribAPPLEFunPtr = unsafePerformIO (getProcAddress "glEnableVertexAttribAPPLE")

{-# NOINLINE glEnableVertexAttribAPPLEFunPtr #-}

glIsVertexAttribEnabledAPPLE :: MonadIO m => GLuint -> GLenum -> m GLboolean
glIsVertexAttribEnabledAPPLE = ffiuintenumIOboolean glIsVertexAttribEnabledAPPLEFunPtr

glIsVertexAttribEnabledAPPLEFunPtr :: FunPtr (GLuint -> GLenum -> IO GLboolean)
glIsVertexAttribEnabledAPPLEFunPtr = unsafePerformIO (getProcAddress "glIsVertexAttribEnabledAPPLE")

{-# NOINLINE glIsVertexAttribEnabledAPPLEFunPtr #-}

glMapVertexAttrib1dAPPLE :: MonadIO m => GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> m ()
glMapVertexAttrib1dAPPLE = ffiuintuintdoubledoubleintintPtrdoubleIOV glMapVertexAttrib1dAPPLEFunPtr

glMapVertexAttrib1dAPPLEFunPtr :: FunPtr (GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ())
glMapVertexAttrib1dAPPLEFunPtr = unsafePerformIO (getProcAddress "glMapVertexAttrib1dAPPLE")

{-# NOINLINE glMapVertexAttrib1dAPPLEFunPtr #-}

glMapVertexAttrib1fAPPLE :: MonadIO m => GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> m ()
glMapVertexAttrib1fAPPLE = ffiuintuintfloatfloatintintPtrfloatIOV glMapVertexAttrib1fAPPLEFunPtr

glMapVertexAttrib1fAPPLEFunPtr :: FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ())
glMapVertexAttrib1fAPPLEFunPtr = unsafePerformIO (getProcAddress "glMapVertexAttrib1fAPPLE")

{-# NOINLINE glMapVertexAttrib1fAPPLEFunPtr #-}

glMapVertexAttrib2dAPPLE :: MonadIO m => GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> m ()
glMapVertexAttrib2dAPPLE = ffiuintuintdoubledoubleintintdoubledoubleintintPtrdoubleIOV glMapVertexAttrib2dAPPLEFunPtr

glMapVertexAttrib2dAPPLEFunPtr :: FunPtr (GLuint -> GLuint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ())
glMapVertexAttrib2dAPPLEFunPtr = unsafePerformIO (getProcAddress "glMapVertexAttrib2dAPPLE")

{-# NOINLINE glMapVertexAttrib2dAPPLEFunPtr #-}

glMapVertexAttrib2fAPPLE :: MonadIO m => GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> m ()
glMapVertexAttrib2fAPPLE = ffiuintuintfloatfloatintintfloatfloatintintPtrfloatIOV glMapVertexAttrib2fAPPLEFunPtr

glMapVertexAttrib2fAPPLEFunPtr :: FunPtr (GLuint -> GLuint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ())
glMapVertexAttrib2fAPPLEFunPtr = unsafePerformIO (getProcAddress "glMapVertexAttrib2fAPPLE")

{-# NOINLINE glMapVertexAttrib2fAPPLEFunPtr #-}

pattern GL_VERTEX_ATTRIB_MAP1_APPLE = 0x8A00

pattern GL_VERTEX_ATTRIB_MAP1_COEFF_APPLE = 0x8A03

pattern GL_VERTEX_ATTRIB_MAP1_DOMAIN_APPLE = 0x8A05

pattern GL_VERTEX_ATTRIB_MAP1_ORDER_APPLE = 0x8A04

pattern GL_VERTEX_ATTRIB_MAP1_SIZE_APPLE = 0x8A02

pattern GL_VERTEX_ATTRIB_MAP2_APPLE = 0x8A01

pattern GL_VERTEX_ATTRIB_MAP2_COEFF_APPLE = 0x8A07

pattern GL_VERTEX_ATTRIB_MAP2_DOMAIN_APPLE = 0x8A09

pattern GL_VERTEX_ATTRIB_MAP2_ORDER_APPLE = 0x8A08

pattern GL_VERTEX_ATTRIB_MAP2_SIZE_APPLE = 0x8A06