-- 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

pattern GL_COLOR_ARRAY_EXT = 0x8076

pattern GL_COLOR_ARRAY_POINTER_EXT = 0x8090

pattern GL_COLOR_ARRAY_SIZE_EXT = 0x8081

pattern GL_COLOR_ARRAY_STRIDE_EXT = 0x8083

pattern GL_COLOR_ARRAY_TYPE_EXT = 0x8082

pattern GL_EDGE_FLAG_ARRAY_COUNT_EXT = 0x808D

pattern GL_EDGE_FLAG_ARRAY_EXT = 0x8079

pattern GL_EDGE_FLAG_ARRAY_POINTER_EXT = 0x8093

pattern GL_EDGE_FLAG_ARRAY_STRIDE_EXT = 0x808C

pattern GL_INDEX_ARRAY_COUNT_EXT = 0x8087

pattern GL_INDEX_ARRAY_EXT = 0x8077

pattern GL_INDEX_ARRAY_POINTER_EXT = 0x8091

pattern GL_INDEX_ARRAY_STRIDE_EXT = 0x8086

pattern GL_INDEX_ARRAY_TYPE_EXT = 0x8085

pattern GL_NORMAL_ARRAY_COUNT_EXT = 0x8080

pattern GL_NORMAL_ARRAY_EXT = 0x8075

pattern GL_NORMAL_ARRAY_POINTER_EXT = 0x808F

pattern GL_NORMAL_ARRAY_STRIDE_EXT = 0x807F

pattern GL_NORMAL_ARRAY_TYPE_EXT = 0x807E

pattern GL_TEXTURE_COORD_ARRAY_COUNT_EXT = 0x808B

pattern GL_TEXTURE_COORD_ARRAY_EXT = 0x8078

pattern GL_TEXTURE_COORD_ARRAY_POINTER_EXT = 0x8092

pattern GL_TEXTURE_COORD_ARRAY_SIZE_EXT = 0x8088

pattern GL_TEXTURE_COORD_ARRAY_STRIDE_EXT = 0x808A

pattern GL_TEXTURE_COORD_ARRAY_TYPE_EXT = 0x8089

pattern GL_VERTEX_ARRAY_COUNT_EXT = 0x807D

pattern GL_VERTEX_ARRAY_EXT = 0x8074

pattern GL_VERTEX_ARRAY_POINTER_EXT = 0x808E

pattern GL_VERTEX_ARRAY_SIZE_EXT = 0x807A

pattern GL_VERTEX_ARRAY_STRIDE_EXT = 0x807C

pattern GL_VERTEX_ARRAY_TYPE_EXT = 0x807B