-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.EXT.VertexArray (
  -- * Extension Support
    gl_EXT_vertex_array

  -- * GL_EXT_vertex_array
  , glArrayElementEXT
  , glColorPointerEXT
  , glDrawArraysEXT
  , glEdgeFlagPointerEXT
  , glGetPointervEXT
  , glIndexPointerEXT
  , glNormalPointerEXT
  , glTexCoordPointerEXT
  , glVertexPointerEXT
  , pattern GL_COLOR_ARRAY_COUNT_EXT
  , pattern GL_COLOR_ARRAY_EXT
  , pattern GL_COLOR_ARRAY_POINTER_EXT
  , pattern GL_COLOR_ARRAY_SIZE_EXT
  , pattern GL_COLOR_ARRAY_STRIDE_EXT
  , pattern GL_COLOR_ARRAY_TYPE_EXT
  , pattern GL_EDGE_FLAG_ARRAY_COUNT_EXT
  , pattern GL_EDGE_FLAG_ARRAY_EXT
  , pattern GL_EDGE_FLAG_ARRAY_POINTER_EXT
  , pattern GL_EDGE_FLAG_ARRAY_STRIDE_EXT
  , pattern GL_INDEX_ARRAY_COUNT_EXT
  , pattern GL_INDEX_ARRAY_EXT
  , pattern GL_INDEX_ARRAY_POINTER_EXT
  , pattern GL_INDEX_ARRAY_STRIDE_EXT
  , pattern GL_INDEX_ARRAY_TYPE_EXT
  , pattern GL_NORMAL_ARRAY_COUNT_EXT
  , pattern GL_NORMAL_ARRAY_EXT
  , pattern GL_NORMAL_ARRAY_POINTER_EXT
  , pattern GL_NORMAL_ARRAY_STRIDE_EXT
  , pattern GL_NORMAL_ARRAY_TYPE_EXT
  , pattern GL_TEXTURE_COORD_ARRAY_COUNT_EXT
  , pattern GL_TEXTURE_COORD_ARRAY_EXT
  , pattern GL_TEXTURE_COORD_ARRAY_POINTER_EXT
  , pattern GL_TEXTURE_COORD_ARRAY_SIZE_EXT
  , pattern GL_TEXTURE_COORD_ARRAY_STRIDE_EXT
  , pattern GL_TEXTURE_COORD_ARRAY_TYPE_EXT
  , pattern GL_VERTEX_ARRAY_COUNT_EXT
  , pattern GL_VERTEX_ARRAY_EXT
  , pattern GL_VERTEX_ARRAY_POINTER_EXT
  , pattern GL_VERTEX_ARRAY_SIZE_EXT
  , pattern GL_VERTEX_ARRAY_STRIDE_EXT
  , pattern GL_VERTEX_ARRAY_TYPE_EXT
) 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_EXT_vertex_array :: Bool
gl_EXT_vertex_array = member "GL_EXT_vertex_array" extensions

glArrayElementEXT :: MonadIO m => GLint -> m ()
glArrayElementEXT = ffiintIOV glArrayElementEXTFunPtr

glArrayElementEXTFunPtr :: FunPtr (GLint -> IO ())
glArrayElementEXTFunPtr = unsafePerformIO (getProcAddress "glArrayElementEXT")

{-# NOINLINE glArrayElementEXTFunPtr #-}

glColorPointerEXT :: MonadIO m => GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> m ()
glColorPointerEXT = ffiintenumsizeisizeiPtrVIOV glColorPointerEXTFunPtr

glColorPointerEXTFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ())
glColorPointerEXTFunPtr = unsafePerformIO (getProcAddress "glColorPointerEXT")

{-# NOINLINE glColorPointerEXTFunPtr #-}

glDrawArraysEXT :: MonadIO m => GLenum -> GLint -> GLsizei -> m ()
glDrawArraysEXT = ffienumintsizeiIOV glDrawArraysEXTFunPtr

glDrawArraysEXTFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> IO ())
glDrawArraysEXTFunPtr = unsafePerformIO (getProcAddress "glDrawArraysEXT")

{-# NOINLINE glDrawArraysEXTFunPtr #-}

glEdgeFlagPointerEXT :: MonadIO m => GLsizei -> GLsizei -> Ptr GLboolean -> m ()
glEdgeFlagPointerEXT = ffisizeisizeiPtrbooleanIOV glEdgeFlagPointerEXTFunPtr

glEdgeFlagPointerEXTFunPtr :: FunPtr (GLsizei -> GLsizei -> Ptr GLboolean -> IO ())
glEdgeFlagPointerEXTFunPtr = unsafePerformIO (getProcAddress "glEdgeFlagPointerEXT")

{-# NOINLINE glEdgeFlagPointerEXTFunPtr #-}

glGetPointervEXT :: MonadIO m => GLenum -> Ptr () -> m ()
glGetPointervEXT = ffienumPtrVIOV glGetPointervEXTFunPtr

glGetPointervEXTFunPtr :: FunPtr (GLenum -> Ptr () -> IO ())
glGetPointervEXTFunPtr = unsafePerformIO (getProcAddress "glGetPointervEXT")

{-# NOINLINE glGetPointervEXTFunPtr #-}

glIndexPointerEXT :: MonadIO m => GLenum -> GLsizei -> GLsizei -> Ptr () -> m ()
glIndexPointerEXT = ffienumsizeisizeiPtrVIOV glIndexPointerEXTFunPtr

glIndexPointerEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ())
glIndexPointerEXTFunPtr = unsafePerformIO (getProcAddress "glIndexPointerEXT")

{-# NOINLINE glIndexPointerEXTFunPtr #-}

glNormalPointerEXT :: MonadIO m => GLenum -> GLsizei -> GLsizei -> Ptr () -> m ()
glNormalPointerEXT = ffienumsizeisizeiPtrVIOV glNormalPointerEXTFunPtr

glNormalPointerEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ())
glNormalPointerEXTFunPtr = unsafePerformIO (getProcAddress "glNormalPointerEXT")

{-# NOINLINE glNormalPointerEXTFunPtr #-}

glTexCoordPointerEXT :: MonadIO m => GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> m ()
glTexCoordPointerEXT = ffiintenumsizeisizeiPtrVIOV glTexCoordPointerEXTFunPtr

glTexCoordPointerEXTFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ())
glTexCoordPointerEXTFunPtr = unsafePerformIO (getProcAddress "glTexCoordPointerEXT")

{-# NOINLINE glTexCoordPointerEXTFunPtr #-}

glVertexPointerEXT :: MonadIO m => GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> m ()
glVertexPointerEXT = ffiintenumsizeisizeiPtrVIOV glVertexPointerEXTFunPtr

glVertexPointerEXTFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> GLsizei -> Ptr () -> IO ())
glVertexPointerEXTFunPtr = unsafePerformIO (getProcAddress "glVertexPointerEXT")

{-# NOINLINE glVertexPointerEXTFunPtr #-}

pattern GL_COLOR_ARRAY_COUNT_EXT = 0x8084 :: GLenum

pattern GL_COLOR_ARRAY_EXT = 0x8076 :: GLenum

pattern GL_COLOR_ARRAY_POINTER_EXT = 0x8090 :: GLenum

pattern GL_COLOR_ARRAY_SIZE_EXT = 0x8081 :: GLenum

pattern GL_COLOR_ARRAY_STRIDE_EXT = 0x8083 :: GLenum

pattern GL_COLOR_ARRAY_TYPE_EXT = 0x8082 :: GLenum

pattern GL_EDGE_FLAG_ARRAY_COUNT_EXT = 0x808D :: GLenum

pattern GL_EDGE_FLAG_ARRAY_EXT = 0x8079 :: GLenum

pattern GL_EDGE_FLAG_ARRAY_POINTER_EXT = 0x8093 :: GLenum

pattern GL_EDGE_FLAG_ARRAY_STRIDE_EXT = 0x808C :: GLenum

pattern GL_INDEX_ARRAY_COUNT_EXT = 0x8087 :: GLenum

pattern GL_INDEX_ARRAY_EXT = 0x8077 :: GLenum

pattern GL_INDEX_ARRAY_POINTER_EXT = 0x8091 :: GLenum

pattern GL_INDEX_ARRAY_STRIDE_EXT = 0x8086 :: GLenum

pattern GL_INDEX_ARRAY_TYPE_EXT = 0x8085 :: GLenum

pattern GL_NORMAL_ARRAY_COUNT_EXT = 0x8080 :: GLenum

pattern GL_NORMAL_ARRAY_EXT = 0x8075 :: GLenum

pattern GL_NORMAL_ARRAY_POINTER_EXT = 0x808F :: GLenum

pattern GL_NORMAL_ARRAY_STRIDE_EXT = 0x807F :: GLenum

pattern GL_NORMAL_ARRAY_TYPE_EXT = 0x807E :: GLenum

pattern GL_TEXTURE_COORD_ARRAY_COUNT_EXT = 0x808B :: GLenum

pattern GL_TEXTURE_COORD_ARRAY_EXT = 0x8078 :: GLenum

pattern GL_TEXTURE_COORD_ARRAY_POINTER_EXT = 0x8092 :: GLenum

pattern GL_TEXTURE_COORD_ARRAY_SIZE_EXT = 0x8088 :: GLenum

pattern GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = 0x808A :: GLenum

pattern GL_TEXTURE_COORD_ARRAY_TYPE_EXT = 0x8089 :: GLenum

pattern GL_VERTEX_ARRAY_COUNT_EXT = 0x807D :: GLenum

pattern GL_VERTEX_ARRAY_EXT = 0x8074 :: GLenum

pattern GL_VERTEX_ARRAY_POINTER_EXT = 0x808E :: GLenum

pattern GL_VERTEX_ARRAY_SIZE_EXT = 0x807A :: GLenum

pattern GL_VERTEX_ARRAY_STRIDE_EXT = 0x807C :: GLenum

pattern GL_VERTEX_ARRAY_TYPE_EXT = 0x807B :: GLenum