-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.NV.VertexProgram4 (
  -- * Extension Support
    gl_NV_vertex_program4

  -- * GL_NV_vertex_program4
  , glGetVertexAttribIivEXT
  , glGetVertexAttribIuivEXT
  , glVertexAttribI1iEXT
  , glVertexAttribI1ivEXT
  , glVertexAttribI1uiEXT
  , glVertexAttribI1uivEXT
  , glVertexAttribI2iEXT
  , glVertexAttribI2ivEXT
  , glVertexAttribI2uiEXT
  , glVertexAttribI2uivEXT
  , glVertexAttribI3iEXT
  , glVertexAttribI3ivEXT
  , glVertexAttribI3uiEXT
  , glVertexAttribI3uivEXT
  , glVertexAttribI4bvEXT
  , glVertexAttribI4iEXT
  , glVertexAttribI4ivEXT
  , glVertexAttribI4svEXT
  , glVertexAttribI4ubvEXT
  , glVertexAttribI4uiEXT
  , glVertexAttribI4uivEXT
  , glVertexAttribI4usvEXT
  , glVertexAttribIPointerEXT
  , pattern GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV
) 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_NV_vertex_program4 :: Bool
gl_NV_vertex_program4 = member "GL_NV_vertex_program4" extensions

glGetVertexAttribIivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetVertexAttribIivEXT = ffiuintenumPtrintIOV glGetVertexAttribIivEXTFunPtr

glGetVertexAttribIivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetVertexAttribIivEXTFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribIivEXT")

{-# NOINLINE glGetVertexAttribIivEXTFunPtr #-}

glGetVertexAttribIuivEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetVertexAttribIuivEXT = ffiuintenumPtruintIOV glGetVertexAttribIuivEXTFunPtr

glGetVertexAttribIuivEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetVertexAttribIuivEXTFunPtr = unsafePerformIO (getProcAddress "glGetVertexAttribIuivEXT")

{-# NOINLINE glGetVertexAttribIuivEXTFunPtr #-}

glVertexAttribI1iEXT :: MonadIO m => GLuint -> GLint -> m ()
glVertexAttribI1iEXT = ffiuintintIOV glVertexAttribI1iEXTFunPtr

glVertexAttribI1iEXTFunPtr :: FunPtr (GLuint -> GLint -> IO ())
glVertexAttribI1iEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1iEXT")

{-# NOINLINE glVertexAttribI1iEXTFunPtr #-}

glVertexAttribI1ivEXT :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttribI1ivEXT = ffiuintPtrintIOV glVertexAttribI1ivEXTFunPtr

glVertexAttribI1ivEXTFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttribI1ivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1ivEXT")

{-# NOINLINE glVertexAttribI1ivEXTFunPtr #-}

glVertexAttribI1uiEXT :: MonadIO m => GLuint -> GLuint -> m ()
glVertexAttribI1uiEXT = ffiuintuintIOV glVertexAttribI1uiEXTFunPtr

glVertexAttribI1uiEXTFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glVertexAttribI1uiEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1uiEXT")

{-# NOINLINE glVertexAttribI1uiEXTFunPtr #-}

glVertexAttribI1uivEXT :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttribI1uivEXT = ffiuintPtruintIOV glVertexAttribI1uivEXTFunPtr

glVertexAttribI1uivEXTFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttribI1uivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI1uivEXT")

{-# NOINLINE glVertexAttribI1uivEXTFunPtr #-}

glVertexAttribI2iEXT :: MonadIO m => GLuint -> GLint -> GLint -> m ()
glVertexAttribI2iEXT = ffiuintintintIOV glVertexAttribI2iEXTFunPtr

glVertexAttribI2iEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> IO ())
glVertexAttribI2iEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2iEXT")

{-# NOINLINE glVertexAttribI2iEXTFunPtr #-}

glVertexAttribI2ivEXT :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttribI2ivEXT = ffiuintPtrintIOV glVertexAttribI2ivEXTFunPtr

glVertexAttribI2ivEXTFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttribI2ivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2ivEXT")

{-# NOINLINE glVertexAttribI2ivEXTFunPtr #-}

glVertexAttribI2uiEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> m ()
glVertexAttribI2uiEXT = ffiuintuintuintIOV glVertexAttribI2uiEXTFunPtr

glVertexAttribI2uiEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glVertexAttribI2uiEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2uiEXT")

{-# NOINLINE glVertexAttribI2uiEXTFunPtr #-}

glVertexAttribI2uivEXT :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttribI2uivEXT = ffiuintPtruintIOV glVertexAttribI2uivEXTFunPtr

glVertexAttribI2uivEXTFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttribI2uivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI2uivEXT")

{-# NOINLINE glVertexAttribI2uivEXTFunPtr #-}

glVertexAttribI3iEXT :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> m ()
glVertexAttribI3iEXT = ffiuintintintintIOV glVertexAttribI3iEXTFunPtr

glVertexAttribI3iEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> IO ())
glVertexAttribI3iEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3iEXT")

{-# NOINLINE glVertexAttribI3iEXTFunPtr #-}

glVertexAttribI3ivEXT :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttribI3ivEXT = ffiuintPtrintIOV glVertexAttribI3ivEXTFunPtr

glVertexAttribI3ivEXTFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttribI3ivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3ivEXT")

{-# NOINLINE glVertexAttribI3ivEXTFunPtr #-}

glVertexAttribI3uiEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> GLuint -> m ()
glVertexAttribI3uiEXT = ffiuintuintuintuintIOV glVertexAttribI3uiEXTFunPtr

glVertexAttribI3uiEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glVertexAttribI3uiEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3uiEXT")

{-# NOINLINE glVertexAttribI3uiEXTFunPtr #-}

glVertexAttribI3uivEXT :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttribI3uivEXT = ffiuintPtruintIOV glVertexAttribI3uivEXTFunPtr

glVertexAttribI3uivEXTFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttribI3uivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI3uivEXT")

{-# NOINLINE glVertexAttribI3uivEXTFunPtr #-}

glVertexAttribI4bvEXT :: MonadIO m => GLuint -> Ptr GLbyte -> m ()
glVertexAttribI4bvEXT = ffiuintPtrbyteIOV glVertexAttribI4bvEXTFunPtr

glVertexAttribI4bvEXTFunPtr :: FunPtr (GLuint -> Ptr GLbyte -> IO ())
glVertexAttribI4bvEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4bvEXT")

{-# NOINLINE glVertexAttribI4bvEXTFunPtr #-}

glVertexAttribI4iEXT :: MonadIO m => GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
glVertexAttribI4iEXT = ffiuintintintintintIOV glVertexAttribI4iEXTFunPtr

glVertexAttribI4iEXTFunPtr :: FunPtr (GLuint -> GLint -> GLint -> GLint -> GLint -> IO ())
glVertexAttribI4iEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4iEXT")

{-# NOINLINE glVertexAttribI4iEXTFunPtr #-}

glVertexAttribI4ivEXT :: MonadIO m => GLuint -> Ptr GLint -> m ()
glVertexAttribI4ivEXT = ffiuintPtrintIOV glVertexAttribI4ivEXTFunPtr

glVertexAttribI4ivEXTFunPtr :: FunPtr (GLuint -> Ptr GLint -> IO ())
glVertexAttribI4ivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4ivEXT")

{-# NOINLINE glVertexAttribI4ivEXTFunPtr #-}

glVertexAttribI4svEXT :: MonadIO m => GLuint -> Ptr GLshort -> m ()
glVertexAttribI4svEXT = ffiuintPtrshortIOV glVertexAttribI4svEXTFunPtr

glVertexAttribI4svEXTFunPtr :: FunPtr (GLuint -> Ptr GLshort -> IO ())
glVertexAttribI4svEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4svEXT")

{-# NOINLINE glVertexAttribI4svEXTFunPtr #-}

glVertexAttribI4ubvEXT :: MonadIO m => GLuint -> Ptr GLubyte -> m ()
glVertexAttribI4ubvEXT = ffiuintPtrubyteIOV glVertexAttribI4ubvEXTFunPtr

glVertexAttribI4ubvEXTFunPtr :: FunPtr (GLuint -> Ptr GLubyte -> IO ())
glVertexAttribI4ubvEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4ubvEXT")

{-# NOINLINE glVertexAttribI4ubvEXTFunPtr #-}

glVertexAttribI4uiEXT :: MonadIO m => GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
glVertexAttribI4uiEXT = ffiuintuintuintuintuintIOV glVertexAttribI4uiEXTFunPtr

glVertexAttribI4uiEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glVertexAttribI4uiEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4uiEXT")

{-# NOINLINE glVertexAttribI4uiEXTFunPtr #-}

glVertexAttribI4uivEXT :: MonadIO m => GLuint -> Ptr GLuint -> m ()
glVertexAttribI4uivEXT = ffiuintPtruintIOV glVertexAttribI4uivEXTFunPtr

glVertexAttribI4uivEXTFunPtr :: FunPtr (GLuint -> Ptr GLuint -> IO ())
glVertexAttribI4uivEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4uivEXT")

{-# NOINLINE glVertexAttribI4uivEXTFunPtr #-}

glVertexAttribI4usvEXT :: MonadIO m => GLuint -> Ptr GLushort -> m ()
glVertexAttribI4usvEXT = ffiuintPtrushortIOV glVertexAttribI4usvEXTFunPtr

glVertexAttribI4usvEXTFunPtr :: FunPtr (GLuint -> Ptr GLushort -> IO ())
glVertexAttribI4usvEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribI4usvEXT")

{-# NOINLINE glVertexAttribI4usvEXTFunPtr #-}

glVertexAttribIPointerEXT :: MonadIO m => GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glVertexAttribIPointerEXT = ffiuintintenumsizeiPtrVIOV glVertexAttribIPointerEXTFunPtr

glVertexAttribIPointerEXTFunPtr :: FunPtr (GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glVertexAttribIPointerEXTFunPtr = unsafePerformIO (getProcAddress "glVertexAttribIPointerEXT")

{-# NOINLINE glVertexAttribIPointerEXTFunPtr #-}

pattern GL_VERTEX_ATTRIB_ARRAY_INTEGER_NV = 0x88FD :: GLenum