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

  -- * GL_ARB_vertex_buffer_object
  , glBindBufferARB
  , glBufferDataARB
  , glBufferSubDataARB
  , glDeleteBuffersARB
  , glGenBuffersARB
  , glGetBufferParameterivARB
  , glGetBufferPointervARB
  , glGetBufferSubDataARB
  , glIsBufferARB
  , glMapBufferARB
  , glUnmapBufferARB
  , pattern GL_ARRAY_BUFFER_ARB
  , pattern GL_ARRAY_BUFFER_BINDING_ARB
  , pattern GL_BUFFER_ACCESS_ARB
  , pattern GL_BUFFER_MAPPED_ARB
  , pattern GL_BUFFER_MAP_POINTER_ARB
  , pattern GL_BUFFER_SIZE_ARB
  , pattern GL_BUFFER_USAGE_ARB
  , pattern GL_COLOR_ARRAY_BUFFER_BINDING_ARB
  , pattern GL_DYNAMIC_COPY_ARB
  , pattern GL_DYNAMIC_DRAW_ARB
  , pattern GL_DYNAMIC_READ_ARB
  , pattern GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB
  , pattern GL_ELEMENT_ARRAY_BUFFER_ARB
  , pattern GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB
  , pattern GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB
  , pattern GL_INDEX_ARRAY_BUFFER_BINDING_ARB
  , pattern GL_NORMAL_ARRAY_BUFFER_BINDING_ARB
  , pattern GL_READ_ONLY_ARB
  , pattern GL_READ_WRITE_ARB
  , pattern GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB
  , pattern GL_STATIC_COPY_ARB
  , pattern GL_STATIC_DRAW_ARB
  , pattern GL_STATIC_READ_ARB
  , pattern GL_STREAM_COPY_ARB
  , pattern GL_STREAM_DRAW_ARB
  , pattern GL_STREAM_READ_ARB
  , pattern GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB
  , pattern GL_VERTEX_ARRAY_BUFFER_BINDING_ARB
  , pattern GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB
  , pattern GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB
  , pattern GL_WRITE_ONLY_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/vertex_buffer_object.txt GL_ARB_vertex_buffer_object> extension is available.

gl_ARB_vertex_buffer_object :: Bool
gl_ARB_vertex_buffer_object :: Bool
gl_ARB_vertex_buffer_object = String -> Set String -> Bool
forall a. Ord a => a -> Set a -> Bool
member String
"GL_ARB_vertex_buffer_object" Set String
extensions
{-# NOINLINE gl_ARB_vertex_buffer_object #-}

-- | Usage: @'glBindBufferARB' target buffer@
--
-- The parameter @target@ is a @BufferTargetARB@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glBindBuffer'.


glBindBufferARB :: MonadIO m => GLenum -> GLuint -> m ()
glBindBufferARB :: forall (m :: * -> *). MonadIO m => GLenum -> GLenum -> m ()
glBindBufferARB = FunPtr (GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> IO ()) -> GLenum -> GLenum -> m ()
ffienumuintIOV FunPtr (GLenum -> GLenum -> IO ())
glBindBufferARBFunPtr

glBindBufferARBFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBindBufferARBFunPtr :: FunPtr (GLenum -> GLenum -> IO ())
glBindBufferARBFunPtr = IO (FunPtr (GLenum -> GLenum -> IO ()))
-> FunPtr (GLenum -> GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLenum -> GLenum -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glBindBufferARB")

{-# NOINLINE glBindBufferARBFunPtr #-}

-- | Usage: @'glBufferDataARB' target size data usage@
--
-- The parameter @target@ is a @BufferTargetARB@.
--
-- The parameter @size@ is a @BufferSizeARB@.
--
-- The parameter @usage@ is a @BufferUsageARB@.
--
-- The length of @data@ should be @size@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glBufferData'.


glBufferDataARB :: MonadIO m => GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> m ()
glBufferDataARB :: forall (m :: * -> *).
MonadIO m =>
GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> m ()
glBufferDataARB = FunPtr (GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> IO ())
-> GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> IO ())
-> GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> m ()
ffienumsizeiptrARBPtrVenumIOV FunPtr (GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> IO ())
glBufferDataARBFunPtr

glBufferDataARBFunPtr :: FunPtr (GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> IO ())
glBufferDataARBFunPtr :: FunPtr (GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> IO ())
glBufferDataARBFunPtr = IO (FunPtr (GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> IO ()))
-> FunPtr (GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO (String
-> IO
     (FunPtr (GLenum -> GLsizeiptrARB -> Ptr () -> GLenum -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glBufferDataARB")

{-# NOINLINE glBufferDataARBFunPtr #-}

-- | Usage: @'glBufferSubDataARB' target offset size data@
--
-- The parameter @target@ is a @BufferTargetARB@.
--
-- The parameter @offset@ is a @BufferOffsetARB@.
--
-- The parameter @size@ is a @BufferSizeARB@.
--
-- The length of @data@ should be @size@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glBufferSubData'.


glBufferSubDataARB :: MonadIO m => GLenum -> GLintptrARB -> GLsizeiptrARB -> Ptr () -> m ()
glBufferSubDataARB :: forall (m :: * -> *).
MonadIO m =>
GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> m ()
glBufferSubDataARB = FunPtr
  (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
-> GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
-> GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> m ()
ffienumintptrARBsizeiptrARBPtrVIOV FunPtr
  (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
glBufferSubDataARBFunPtr

glBufferSubDataARBFunPtr :: FunPtr (GLenum -> GLintptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
glBufferSubDataARBFunPtr :: FunPtr
  (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
glBufferSubDataARBFunPtr = IO
  (FunPtr
     (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ()))
-> FunPtr
     (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
forall a. IO a -> a
unsafePerformIO (String
-> IO
     (FunPtr
        (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glBufferSubDataARB")

{-# NOINLINE glBufferSubDataARBFunPtr #-}

-- | Usage: @'glDeleteBuffersARB' n buffers@
--
-- The length of @buffers@ should be @n@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glDeleteBuffers'.


glDeleteBuffersARB :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteBuffersARB :: forall (m :: * -> *). MonadIO m => GLsizei -> Ptr GLenum -> m ()
glDeleteBuffersARB = FunPtr (GLsizei -> Ptr GLenum -> IO ())
-> GLsizei -> Ptr GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsizei -> Ptr GLenum -> IO ())
-> GLsizei -> Ptr GLenum -> m ()
ffisizeiPtruintIOV FunPtr (GLsizei -> Ptr GLenum -> IO ())
glDeleteBuffersARBFunPtr

glDeleteBuffersARBFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteBuffersARBFunPtr :: FunPtr (GLsizei -> Ptr GLenum -> IO ())
glDeleteBuffersARBFunPtr = IO (FunPtr (GLsizei -> Ptr GLenum -> IO ()))
-> FunPtr (GLsizei -> Ptr GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLsizei -> Ptr GLenum -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glDeleteBuffersARB")

{-# NOINLINE glDeleteBuffersARBFunPtr #-}

-- | Usage: @'glGenBuffersARB' n buffers@
--
-- The length of @buffers@ should be @n@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGenBuffers'.


glGenBuffersARB :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenBuffersARB :: forall (m :: * -> *). MonadIO m => GLsizei -> Ptr GLenum -> m ()
glGenBuffersARB = FunPtr (GLsizei -> Ptr GLenum -> IO ())
-> GLsizei -> Ptr GLenum -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsizei -> Ptr GLenum -> IO ())
-> GLsizei -> Ptr GLenum -> m ()
ffisizeiPtruintIOV FunPtr (GLsizei -> Ptr GLenum -> IO ())
glGenBuffersARBFunPtr

glGenBuffersARBFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenBuffersARBFunPtr :: FunPtr (GLsizei -> Ptr GLenum -> IO ())
glGenBuffersARBFunPtr = IO (FunPtr (GLsizei -> Ptr GLenum -> IO ()))
-> FunPtr (GLsizei -> Ptr GLenum -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLsizei -> Ptr GLenum -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glGenBuffersARB")

{-# NOINLINE glGenBuffersARBFunPtr #-}

-- | Usage: @'glGetBufferParameterivARB' target pname params@
--
-- The parameter @target@ is a @BufferTargetARB@.
--
-- The parameter @pname@ is a @BufferPNameARB@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetBufferParameteriv'.


glGetBufferParameterivARB :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetBufferParameterivARB :: forall (m :: * -> *).
MonadIO m =>
GLenum -> GLenum -> Ptr GLsizei -> m ()
glGetBufferParameterivARB = FunPtr (GLenum -> GLenum -> Ptr GLsizei -> IO ())
-> GLenum -> GLenum -> Ptr GLsizei -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> Ptr GLsizei -> IO ())
-> GLenum -> GLenum -> Ptr GLsizei -> m ()
ffienumenumPtrintIOV FunPtr (GLenum -> GLenum -> Ptr GLsizei -> IO ())
glGetBufferParameterivARBFunPtr

glGetBufferParameterivARBFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetBufferParameterivARBFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLsizei -> IO ())
glGetBufferParameterivARBFunPtr = IO (FunPtr (GLenum -> GLenum -> Ptr GLsizei -> IO ()))
-> FunPtr (GLenum -> GLenum -> Ptr GLsizei -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLenum -> GLenum -> Ptr GLsizei -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glGetBufferParameterivARB")

{-# NOINLINE glGetBufferParameterivARBFunPtr #-}

-- | Usage: @'glGetBufferPointervARB' target pname params@
--
-- The parameter @target@ is a @BufferTargetARB@.
--
-- The parameter @pname@ is a @BufferPointerNameARB@.
--
-- The length of @params@ should be @1@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetBufferPointerv'.


glGetBufferPointervARB :: MonadIO m => GLenum -> GLenum -> Ptr (Ptr ()) -> m ()
glGetBufferPointervARB :: forall (m :: * -> *).
MonadIO m =>
GLenum -> GLenum -> Ptr (Ptr ()) -> m ()
glGetBufferPointervARB = FunPtr (GLenum -> GLenum -> Ptr (Ptr ()) -> IO ())
-> GLenum -> GLenum -> Ptr (Ptr ()) -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> Ptr (Ptr ()) -> IO ())
-> GLenum -> GLenum -> Ptr (Ptr ()) -> m ()
ffienumenumPtrPtrVIOV FunPtr (GLenum -> GLenum -> Ptr (Ptr ()) -> IO ())
glGetBufferPointervARBFunPtr

glGetBufferPointervARBFunPtr :: FunPtr (GLenum -> GLenum -> Ptr (Ptr ()) -> IO ())
glGetBufferPointervARBFunPtr :: FunPtr (GLenum -> GLenum -> Ptr (Ptr ()) -> IO ())
glGetBufferPointervARBFunPtr = IO (FunPtr (GLenum -> GLenum -> Ptr (Ptr ()) -> IO ()))
-> FunPtr (GLenum -> GLenum -> Ptr (Ptr ()) -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLenum -> GLenum -> Ptr (Ptr ()) -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glGetBufferPointervARB")

{-# NOINLINE glGetBufferPointervARBFunPtr #-}

-- | Usage: @'glGetBufferSubDataARB' target offset size data@
--
-- The parameter @target@ is a @BufferTargetARB@.
--
-- The parameter @offset@ is a @BufferOffsetARB@.
--
-- The parameter @size@ is a @BufferSizeARB@.
--
-- The length of @data@ should be @size@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetBufferSubData'.


glGetBufferSubDataARB :: MonadIO m => GLenum -> GLintptrARB -> GLsizeiptrARB -> Ptr () -> m ()
glGetBufferSubDataARB :: forall (m :: * -> *).
MonadIO m =>
GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> m ()
glGetBufferSubDataARB = FunPtr
  (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
-> GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
-> GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> m ()
ffienumintptrARBsizeiptrARBPtrVIOV FunPtr
  (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
glGetBufferSubDataARBFunPtr

glGetBufferSubDataARBFunPtr :: FunPtr (GLenum -> GLintptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
glGetBufferSubDataARBFunPtr :: FunPtr
  (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
glGetBufferSubDataARBFunPtr = IO
  (FunPtr
     (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ()))
-> FunPtr
     (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ())
forall a. IO a -> a
unsafePerformIO (String
-> IO
     (FunPtr
        (GLenum -> GLsizeiptrARB -> GLsizeiptrARB -> Ptr () -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glGetBufferSubDataARB")

{-# NOINLINE glGetBufferSubDataARBFunPtr #-}

-- | Usage: @'glIsBufferARB' buffer@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glIsBuffer'.


glIsBufferARB :: MonadIO m => GLuint -> m GLboolean
glIsBufferARB :: forall (m :: * -> *). MonadIO m => GLenum -> m GLboolean
glIsBufferARB = FunPtr (GLenum -> IO GLboolean) -> GLenum -> m GLboolean
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> IO GLboolean) -> GLenum -> m GLboolean
ffiuintIOboolean FunPtr (GLenum -> IO GLboolean)
glIsBufferARBFunPtr

glIsBufferARBFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsBufferARBFunPtr :: FunPtr (GLenum -> IO GLboolean)
glIsBufferARBFunPtr = IO (FunPtr (GLenum -> IO GLboolean))
-> FunPtr (GLenum -> IO GLboolean)
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLenum -> IO GLboolean))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glIsBufferARB")

{-# NOINLINE glIsBufferARBFunPtr #-}

-- | Usage: @'glMapBufferARB' target access@
--
-- The parameter @target@ is a @BufferTargetARB@.
--
-- The parameter @access@ is a @BufferAccessARB@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glMapBuffer'.


glMapBufferARB :: MonadIO m => GLenum -> GLenum -> m (Ptr ())
glMapBufferARB :: forall (m :: * -> *). MonadIO m => GLenum -> GLenum -> m (Ptr ())
glMapBufferARB = FunPtr (GLenum -> GLenum -> IO (Ptr ()))
-> GLenum -> GLenum -> m (Ptr ())
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLenum -> IO (Ptr ()))
-> GLenum -> GLenum -> m (Ptr ())
ffienumenumIOPtrV FunPtr (GLenum -> GLenum -> IO (Ptr ()))
glMapBufferARBFunPtr

glMapBufferARBFunPtr :: FunPtr (GLenum -> GLenum -> IO (Ptr ()))
glMapBufferARBFunPtr :: FunPtr (GLenum -> GLenum -> IO (Ptr ()))
glMapBufferARBFunPtr = IO (FunPtr (GLenum -> GLenum -> IO (Ptr ())))
-> FunPtr (GLenum -> GLenum -> IO (Ptr ()))
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLenum -> GLenum -> IO (Ptr ())))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glMapBufferARB")

{-# NOINLINE glMapBufferARBFunPtr #-}

-- | Usage: @'glUnmapBufferARB' target@
--
-- The parameter @target@ is a @BufferTargetARB@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glUnmapBuffer'.


glUnmapBufferARB :: MonadIO m => GLenum -> m GLboolean
glUnmapBufferARB :: forall (m :: * -> *). MonadIO m => GLenum -> m GLboolean
glUnmapBufferARB = FunPtr (GLenum -> IO GLboolean) -> GLenum -> m GLboolean
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> IO GLboolean) -> GLenum -> m GLboolean
ffienumIOboolean FunPtr (GLenum -> IO GLboolean)
glUnmapBufferARBFunPtr

glUnmapBufferARBFunPtr :: FunPtr (GLenum -> IO GLboolean)
glUnmapBufferARBFunPtr :: FunPtr (GLenum -> IO GLboolean)
glUnmapBufferARBFunPtr = IO (FunPtr (GLenum -> IO GLboolean))
-> FunPtr (GLenum -> IO GLboolean)
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLenum -> IO GLboolean))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glUnmapBufferARB")

{-# NOINLINE glUnmapBufferARBFunPtr #-}

pattern GL_ARRAY_BUFFER_ARB  :: (Eq a, Num a) => a

pattern $mGL_ARRAY_BUFFER_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_ARRAY_BUFFER_ARB :: forall a. (Eq a, Num a) => a
GL_ARRAY_BUFFER_ARB = 0x8892

pattern GL_ARRAY_BUFFER_BINDING_ARB  :: (Eq a, Num a) => a

pattern $mGL_ARRAY_BUFFER_BINDING_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_ARRAY_BUFFER_BINDING_ARB :: forall a. (Eq a, Num a) => a
GL_ARRAY_BUFFER_BINDING_ARB = 0x8894

pattern GL_BUFFER_ACCESS_ARB  :: (Eq a, Num a) => a

pattern $mGL_BUFFER_ACCESS_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_BUFFER_ACCESS_ARB :: forall a. (Eq a, Num a) => a
GL_BUFFER_ACCESS_ARB = 0x88BB

pattern GL_BUFFER_MAPPED_ARB  :: (Eq a, Num a) => a

pattern $mGL_BUFFER_MAPPED_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_BUFFER_MAPPED_ARB :: forall a. (Eq a, Num a) => a
GL_BUFFER_MAPPED_ARB = 0x88BC

pattern GL_BUFFER_MAP_POINTER_ARB  :: (Eq a, Num a) => a

pattern $mGL_BUFFER_MAP_POINTER_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_BUFFER_MAP_POINTER_ARB :: forall a. (Eq a, Num a) => a
GL_BUFFER_MAP_POINTER_ARB = 0x88BD

pattern GL_BUFFER_SIZE_ARB  :: (Eq a, Num a) => a

pattern $mGL_BUFFER_SIZE_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_BUFFER_SIZE_ARB :: forall a. (Eq a, Num a) => a
GL_BUFFER_SIZE_ARB = 0x8764

pattern GL_BUFFER_USAGE_ARB  :: (Eq a, Num a) => a

pattern $mGL_BUFFER_USAGE_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_BUFFER_USAGE_ARB :: forall a. (Eq a, Num a) => a
GL_BUFFER_USAGE_ARB = 0x8765

pattern GL_COLOR_ARRAY_BUFFER_BINDING_ARB  :: (Eq a, Num a) => a

pattern $mGL_COLOR_ARRAY_BUFFER_BINDING_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_COLOR_ARRAY_BUFFER_BINDING_ARB :: forall a. (Eq a, Num a) => a
GL_COLOR_ARRAY_BUFFER_BINDING_ARB = 0x8898

pattern GL_DYNAMIC_COPY_ARB  :: (Eq a, Num a) => a

pattern $mGL_DYNAMIC_COPY_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_DYNAMIC_COPY_ARB :: forall a. (Eq a, Num a) => a
GL_DYNAMIC_COPY_ARB = 0x88EA

pattern GL_DYNAMIC_DRAW_ARB  :: (Eq a, Num a) => a

pattern $mGL_DYNAMIC_DRAW_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_DYNAMIC_DRAW_ARB :: forall a. (Eq a, Num a) => a
GL_DYNAMIC_DRAW_ARB = 0x88E8

pattern GL_DYNAMIC_READ_ARB  :: (Eq a, Num a) => a

pattern $mGL_DYNAMIC_READ_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_DYNAMIC_READ_ARB :: forall a. (Eq a, Num a) => a
GL_DYNAMIC_READ_ARB = 0x88E9

pattern GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB  :: (Eq a, Num a) => a

pattern $mGL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB :: forall a. (Eq a, Num a) => a
GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB = 0x889B

pattern GL_ELEMENT_ARRAY_BUFFER_ARB  :: (Eq a, Num a) => a

pattern $mGL_ELEMENT_ARRAY_BUFFER_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_ELEMENT_ARRAY_BUFFER_ARB :: forall a. (Eq a, Num a) => a
GL_ELEMENT_ARRAY_BUFFER_ARB = 0x8893

pattern GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB  :: (Eq a, Num a) => a

pattern $mGL_ELEMENT_ARRAY_BUFFER_BINDING_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_ELEMENT_ARRAY_BUFFER_BINDING_ARB :: forall a. (Eq a, Num a) => a
GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB = 0x8895

pattern GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB  :: (Eq a, Num a) => a

pattern $mGL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB :: forall a. (Eq a, Num a) => a
GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB = 0x889D

pattern GL_INDEX_ARRAY_BUFFER_BINDING_ARB  :: (Eq a, Num a) => a

pattern $mGL_INDEX_ARRAY_BUFFER_BINDING_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_INDEX_ARRAY_BUFFER_BINDING_ARB :: forall a. (Eq a, Num a) => a
GL_INDEX_ARRAY_BUFFER_BINDING_ARB = 0x8899

pattern GL_NORMAL_ARRAY_BUFFER_BINDING_ARB  :: (Eq a, Num a) => a

pattern $mGL_NORMAL_ARRAY_BUFFER_BINDING_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_NORMAL_ARRAY_BUFFER_BINDING_ARB :: forall a. (Eq a, Num a) => a
GL_NORMAL_ARRAY_BUFFER_BINDING_ARB = 0x8897

pattern GL_READ_ONLY_ARB  :: (Eq a, Num a) => a

pattern $mGL_READ_ONLY_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_READ_ONLY_ARB :: forall a. (Eq a, Num a) => a
GL_READ_ONLY_ARB = 0x88B8

pattern GL_READ_WRITE_ARB  :: (Eq a, Num a) => a

pattern $mGL_READ_WRITE_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_READ_WRITE_ARB :: forall a. (Eq a, Num a) => a
GL_READ_WRITE_ARB = 0x88BA

pattern GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB  :: (Eq a, Num a) => a

pattern $mGL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB :: forall a. (Eq a, Num a) => a
GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB = 0x889C

pattern GL_STATIC_COPY_ARB  :: (Eq a, Num a) => a

pattern $mGL_STATIC_COPY_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_STATIC_COPY_ARB :: forall a. (Eq a, Num a) => a
GL_STATIC_COPY_ARB = 0x88E6

pattern GL_STATIC_DRAW_ARB  :: (Eq a, Num a) => a

pattern $mGL_STATIC_DRAW_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_STATIC_DRAW_ARB :: forall a. (Eq a, Num a) => a
GL_STATIC_DRAW_ARB = 0x88E4

pattern GL_STATIC_READ_ARB  :: (Eq a, Num a) => a

pattern $mGL_STATIC_READ_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_STATIC_READ_ARB :: forall a. (Eq a, Num a) => a
GL_STATIC_READ_ARB = 0x88E5

pattern GL_STREAM_COPY_ARB  :: (Eq a, Num a) => a

pattern $mGL_STREAM_COPY_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_STREAM_COPY_ARB :: forall a. (Eq a, Num a) => a
GL_STREAM_COPY_ARB = 0x88E2

pattern GL_STREAM_DRAW_ARB  :: (Eq a, Num a) => a

pattern $mGL_STREAM_DRAW_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_STREAM_DRAW_ARB :: forall a. (Eq a, Num a) => a
GL_STREAM_DRAW_ARB = 0x88E0

pattern GL_STREAM_READ_ARB  :: (Eq a, Num a) => a

pattern $mGL_STREAM_READ_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_STREAM_READ_ARB :: forall a. (Eq a, Num a) => a
GL_STREAM_READ_ARB = 0x88E1

pattern GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB  :: (Eq a, Num a) => a

pattern $mGL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB :: forall a. (Eq a, Num a) => a
GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB = 0x889A

pattern GL_VERTEX_ARRAY_BUFFER_BINDING_ARB  :: (Eq a, Num a) => a

pattern $mGL_VERTEX_ARRAY_BUFFER_BINDING_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_VERTEX_ARRAY_BUFFER_BINDING_ARB :: forall a. (Eq a, Num a) => a
GL_VERTEX_ARRAY_BUFFER_BINDING_ARB = 0x8896

pattern GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB  :: (Eq a, Num a) => a

pattern $mGL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB :: forall a. (Eq a, Num a) => a
GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB = 0x889F

pattern GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB  :: (Eq a, Num a) => a

pattern $mGL_WEIGHT_ARRAY_BUFFER_BINDING_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_WEIGHT_ARRAY_BUFFER_BINDING_ARB :: forall a. (Eq a, Num a) => a
GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB = 0x889E

pattern GL_WRITE_ONLY_ARB  :: (Eq a, Num a) => a

pattern $mGL_WRITE_ONLY_ARB :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_WRITE_ONLY_ARB :: forall a. (Eq a, Num a) => a
GL_WRITE_ONLY_ARB = 0x88B9