-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.ARB.ShaderObjects (
  -- * Extension Support
    gl_ARB_shader_objects

  -- * GL_ARB_shader_objects
  , glAttachObjectARB
  , glCompileShaderARB
  , glCreateProgramObjectARB
  , glCreateShaderObjectARB
  , glDeleteObjectARB
  , glDetachObjectARB
  , glGetActiveUniformARB
  , glGetAttachedObjectsARB
  , glGetHandleARB
  , glGetInfoLogARB
  , glGetObjectParameterfvARB
  , glGetObjectParameterivARB
  , glGetShaderSourceARB
  , glGetUniformLocationARB
  , glGetUniformfvARB
  , glGetUniformivARB
  , glLinkProgramARB
  , glShaderSourceARB
  , glUniform1fARB
  , glUniform1fvARB
  , glUniform1iARB
  , glUniform1ivARB
  , glUniform2fARB
  , glUniform2fvARB
  , glUniform2iARB
  , glUniform2ivARB
  , glUniform3fARB
  , glUniform3fvARB
  , glUniform3iARB
  , glUniform3ivARB
  , glUniform4fARB
  , glUniform4fvARB
  , glUniform4iARB
  , glUniform4ivARB
  , glUniformMatrix2fvARB
  , glUniformMatrix3fvARB
  , glUniformMatrix4fvARB
  , glUseProgramObjectARB
  , glValidateProgramARB
  , pattern GL_BOOL_ARB
  , pattern GL_BOOL_VEC2_ARB
  , pattern GL_BOOL_VEC3_ARB
  , pattern GL_BOOL_VEC4_ARB
  , pattern GL_FLOAT_MAT2_ARB
  , pattern GL_FLOAT_MAT3_ARB
  , pattern GL_FLOAT_MAT4_ARB
  , pattern GL_FLOAT_VEC2_ARB
  , pattern GL_FLOAT_VEC3_ARB
  , pattern GL_FLOAT_VEC4_ARB
  , pattern GL_INT_VEC2_ARB
  , pattern GL_INT_VEC3_ARB
  , pattern GL_INT_VEC4_ARB
  , pattern GL_OBJECT_ACTIVE_UNIFORMS_ARB
  , pattern GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB
  , pattern GL_OBJECT_ATTACHED_OBJECTS_ARB
  , pattern GL_OBJECT_COMPILE_STATUS_ARB
  , pattern GL_OBJECT_DELETE_STATUS_ARB
  , pattern GL_OBJECT_INFO_LOG_LENGTH_ARB
  , pattern GL_OBJECT_LINK_STATUS_ARB
  , pattern GL_OBJECT_SHADER_SOURCE_LENGTH_ARB
  , pattern GL_OBJECT_SUBTYPE_ARB
  , pattern GL_OBJECT_TYPE_ARB
  , pattern GL_OBJECT_VALIDATE_STATUS_ARB
  , pattern GL_PROGRAM_OBJECT_ARB
  , pattern GL_SAMPLER_1D_ARB
  , pattern GL_SAMPLER_1D_SHADOW_ARB
  , pattern GL_SAMPLER_2D_ARB
  , pattern GL_SAMPLER_2D_RECT_ARB
  , pattern GL_SAMPLER_2D_RECT_SHADOW_ARB
  , pattern GL_SAMPLER_2D_SHADOW_ARB
  , pattern GL_SAMPLER_3D_ARB
  , pattern GL_SAMPLER_CUBE_ARB
  , pattern GL_SHADER_OBJECT_ARB
) 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.Internal.Shared
import Graphics.GL.Raw.Types
import System.IO.Unsafe

gl_ARB_shader_objects :: Bool
gl_ARB_shader_objects = member "GL_ARB_shader_objects" extensions

glAttachObjectARB :: MonadIO m => GLhandleARB -> GLhandleARB -> m ()
glAttachObjectARB = ffihandleARBhandleARBIOV glAttachObjectARBFunPtr

glAttachObjectARBFunPtr :: FunPtr (GLhandleARB -> GLhandleARB -> IO ())
glAttachObjectARBFunPtr = unsafePerformIO (getProcAddress "glAttachObjectARB")

{-# NOINLINE glAttachObjectARBFunPtr #-}

glCompileShaderARB :: MonadIO m => GLhandleARB -> m ()
glCompileShaderARB = ffihandleARBIOV glCompileShaderARBFunPtr

glCompileShaderARBFunPtr :: FunPtr (GLhandleARB -> IO ())
glCompileShaderARBFunPtr = unsafePerformIO (getProcAddress "glCompileShaderARB")

{-# NOINLINE glCompileShaderARBFunPtr #-}

glCreateProgramObjectARB :: MonadIO m => m GLhandleARB
glCreateProgramObjectARB = ffiIOhandleARB glCreateProgramObjectARBFunPtr

glCreateProgramObjectARBFunPtr :: FunPtr (IO GLhandleARB)
glCreateProgramObjectARBFunPtr = unsafePerformIO (getProcAddress "glCreateProgramObjectARB")

{-# NOINLINE glCreateProgramObjectARBFunPtr #-}

glCreateShaderObjectARB :: MonadIO m => GLenum -> m GLhandleARB
glCreateShaderObjectARB = ffienumIOhandleARB glCreateShaderObjectARBFunPtr

glCreateShaderObjectARBFunPtr :: FunPtr (GLenum -> IO GLhandleARB)
glCreateShaderObjectARBFunPtr = unsafePerformIO (getProcAddress "glCreateShaderObjectARB")

{-# NOINLINE glCreateShaderObjectARBFunPtr #-}

glDeleteObjectARB :: MonadIO m => GLhandleARB -> m ()
glDeleteObjectARB = ffihandleARBIOV glDeleteObjectARBFunPtr

glDeleteObjectARBFunPtr :: FunPtr (GLhandleARB -> IO ())
glDeleteObjectARBFunPtr = unsafePerformIO (getProcAddress "glDeleteObjectARB")

{-# NOINLINE glDeleteObjectARBFunPtr #-}

glDetachObjectARB :: MonadIO m => GLhandleARB -> GLhandleARB -> m ()
glDetachObjectARB = ffihandleARBhandleARBIOV glDetachObjectARBFunPtr

glDetachObjectARBFunPtr :: FunPtr (GLhandleARB -> GLhandleARB -> IO ())
glDetachObjectARBFunPtr = unsafePerformIO (getProcAddress "glDetachObjectARB")

{-# NOINLINE glDetachObjectARBFunPtr #-}

glGetActiveUniformARB :: MonadIO m => GLhandleARB -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLcharARB -> m ()
glGetActiveUniformARB = ffihandleARBuintsizeiPtrsizeiPtrintPtrenumPtrcharARBIOV glGetActiveUniformARBFunPtr

glGetActiveUniformARBFunPtr :: FunPtr (GLhandleARB -> GLuint -> GLsizei -> Ptr GLsizei -> Ptr GLint -> Ptr GLenum -> Ptr GLcharARB -> IO ())
glGetActiveUniformARBFunPtr = unsafePerformIO (getProcAddress "glGetActiveUniformARB")

{-# NOINLINE glGetActiveUniformARBFunPtr #-}

glGetAttachedObjectsARB :: MonadIO m => GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLhandleARB -> m ()
glGetAttachedObjectsARB = ffihandleARBsizeiPtrsizeiPtrhandleARBIOV glGetAttachedObjectsARBFunPtr

glGetAttachedObjectsARBFunPtr :: FunPtr (GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLhandleARB -> IO ())
glGetAttachedObjectsARBFunPtr = unsafePerformIO (getProcAddress "glGetAttachedObjectsARB")

{-# NOINLINE glGetAttachedObjectsARBFunPtr #-}

glGetHandleARB :: MonadIO m => GLenum -> m GLhandleARB
glGetHandleARB = ffienumIOhandleARB glGetHandleARBFunPtr

glGetHandleARBFunPtr :: FunPtr (GLenum -> IO GLhandleARB)
glGetHandleARBFunPtr = unsafePerformIO (getProcAddress "glGetHandleARB")

{-# NOINLINE glGetHandleARBFunPtr #-}

glGetInfoLogARB :: MonadIO m => GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLcharARB -> m ()
glGetInfoLogARB = ffihandleARBsizeiPtrsizeiPtrcharARBIOV glGetInfoLogARBFunPtr

glGetInfoLogARBFunPtr :: FunPtr (GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLcharARB -> IO ())
glGetInfoLogARBFunPtr = unsafePerformIO (getProcAddress "glGetInfoLogARB")

{-# NOINLINE glGetInfoLogARBFunPtr #-}

glGetObjectParameterfvARB :: MonadIO m => GLhandleARB -> GLenum -> Ptr GLfloat -> m ()
glGetObjectParameterfvARB = ffihandleARBenumPtrfloatIOV glGetObjectParameterfvARBFunPtr

glGetObjectParameterfvARBFunPtr :: FunPtr (GLhandleARB -> GLenum -> Ptr GLfloat -> IO ())
glGetObjectParameterfvARBFunPtr = unsafePerformIO (getProcAddress "glGetObjectParameterfvARB")

{-# NOINLINE glGetObjectParameterfvARBFunPtr #-}

glGetObjectParameterivARB :: MonadIO m => GLhandleARB -> GLenum -> Ptr GLint -> m ()
glGetObjectParameterivARB = ffihandleARBenumPtrintIOV glGetObjectParameterivARBFunPtr

glGetObjectParameterivARBFunPtr :: FunPtr (GLhandleARB -> GLenum -> Ptr GLint -> IO ())
glGetObjectParameterivARBFunPtr = unsafePerformIO (getProcAddress "glGetObjectParameterivARB")

{-# NOINLINE glGetObjectParameterivARBFunPtr #-}

glGetShaderSourceARB :: MonadIO m => GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLcharARB -> m ()
glGetShaderSourceARB = ffihandleARBsizeiPtrsizeiPtrcharARBIOV glGetShaderSourceARBFunPtr

glGetShaderSourceARBFunPtr :: FunPtr (GLhandleARB -> GLsizei -> Ptr GLsizei -> Ptr GLcharARB -> IO ())
glGetShaderSourceARBFunPtr = unsafePerformIO (getProcAddress "glGetShaderSourceARB")

{-# NOINLINE glGetShaderSourceARBFunPtr #-}

glGetUniformLocationARB :: MonadIO m => GLhandleARB -> Ptr GLcharARB -> m GLint
glGetUniformLocationARB = ffihandleARBPtrcharARBIOint glGetUniformLocationARBFunPtr

glGetUniformLocationARBFunPtr :: FunPtr (GLhandleARB -> Ptr GLcharARB -> IO GLint)
glGetUniformLocationARBFunPtr = unsafePerformIO (getProcAddress "glGetUniformLocationARB")

{-# NOINLINE glGetUniformLocationARBFunPtr #-}

glGetUniformfvARB :: MonadIO m => GLhandleARB -> GLint -> Ptr GLfloat -> m ()
glGetUniformfvARB = ffihandleARBintPtrfloatIOV glGetUniformfvARBFunPtr

glGetUniformfvARBFunPtr :: FunPtr (GLhandleARB -> GLint -> Ptr GLfloat -> IO ())
glGetUniformfvARBFunPtr = unsafePerformIO (getProcAddress "glGetUniformfvARB")

{-# NOINLINE glGetUniformfvARBFunPtr #-}

glGetUniformivARB :: MonadIO m => GLhandleARB -> GLint -> Ptr GLint -> m ()
glGetUniformivARB = ffihandleARBintPtrintIOV glGetUniformivARBFunPtr

glGetUniformivARBFunPtr :: FunPtr (GLhandleARB -> GLint -> Ptr GLint -> IO ())
glGetUniformivARBFunPtr = unsafePerformIO (getProcAddress "glGetUniformivARB")

{-# NOINLINE glGetUniformivARBFunPtr #-}

glLinkProgramARB :: MonadIO m => GLhandleARB -> m ()
glLinkProgramARB = ffihandleARBIOV glLinkProgramARBFunPtr

glLinkProgramARBFunPtr :: FunPtr (GLhandleARB -> IO ())
glLinkProgramARBFunPtr = unsafePerformIO (getProcAddress "glLinkProgramARB")

{-# NOINLINE glLinkProgramARBFunPtr #-}

glShaderSourceARB :: MonadIO m => GLhandleARB -> GLsizei -> Ptr GLcharARB -> Ptr GLint -> m ()
glShaderSourceARB = ffihandleARBsizeiPtrcharARBPtrintIOV glShaderSourceARBFunPtr

glShaderSourceARBFunPtr :: FunPtr (GLhandleARB -> GLsizei -> Ptr GLcharARB -> Ptr GLint -> IO ())
glShaderSourceARBFunPtr = unsafePerformIO (getProcAddress "glShaderSourceARB")

{-# NOINLINE glShaderSourceARBFunPtr #-}

glUniform1fARB :: MonadIO m => GLint -> GLfloat -> m ()
glUniform1fARB = ffiintfloatIOV glUniform1fARBFunPtr

glUniform1fARBFunPtr :: FunPtr (GLint -> GLfloat -> IO ())
glUniform1fARBFunPtr = unsafePerformIO (getProcAddress "glUniform1fARB")

{-# NOINLINE glUniform1fARBFunPtr #-}

glUniform1fvARB :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
glUniform1fvARB = ffiintsizeiPtrfloatIOV glUniform1fvARBFunPtr

glUniform1fvARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
glUniform1fvARBFunPtr = unsafePerformIO (getProcAddress "glUniform1fvARB")

{-# NOINLINE glUniform1fvARBFunPtr #-}

glUniform1iARB :: MonadIO m => GLint -> GLint -> m ()
glUniform1iARB = ffiintintIOV glUniform1iARBFunPtr

glUniform1iARBFunPtr :: FunPtr (GLint -> GLint -> IO ())
glUniform1iARBFunPtr = unsafePerformIO (getProcAddress "glUniform1iARB")

{-# NOINLINE glUniform1iARBFunPtr #-}

glUniform1ivARB :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
glUniform1ivARB = ffiintsizeiPtrintIOV glUniform1ivARBFunPtr

glUniform1ivARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
glUniform1ivARBFunPtr = unsafePerformIO (getProcAddress "glUniform1ivARB")

{-# NOINLINE glUniform1ivARBFunPtr #-}

glUniform2fARB :: MonadIO m => GLint -> GLfloat -> GLfloat -> m ()
glUniform2fARB = ffiintfloatfloatIOV glUniform2fARBFunPtr

glUniform2fARBFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> IO ())
glUniform2fARBFunPtr = unsafePerformIO (getProcAddress "glUniform2fARB")

{-# NOINLINE glUniform2fARBFunPtr #-}

glUniform2fvARB :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
glUniform2fvARB = ffiintsizeiPtrfloatIOV glUniform2fvARBFunPtr

glUniform2fvARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
glUniform2fvARBFunPtr = unsafePerformIO (getProcAddress "glUniform2fvARB")

{-# NOINLINE glUniform2fvARBFunPtr #-}

glUniform2iARB :: MonadIO m => GLint -> GLint -> GLint -> m ()
glUniform2iARB = ffiintintintIOV glUniform2iARBFunPtr

glUniform2iARBFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glUniform2iARBFunPtr = unsafePerformIO (getProcAddress "glUniform2iARB")

{-# NOINLINE glUniform2iARBFunPtr #-}

glUniform2ivARB :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
glUniform2ivARB = ffiintsizeiPtrintIOV glUniform2ivARBFunPtr

glUniform2ivARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
glUniform2ivARBFunPtr = unsafePerformIO (getProcAddress "glUniform2ivARB")

{-# NOINLINE glUniform2ivARBFunPtr #-}

glUniform3fARB :: MonadIO m => GLint -> GLfloat -> GLfloat -> GLfloat -> m ()
glUniform3fARB = ffiintfloatfloatfloatIOV glUniform3fARBFunPtr

glUniform3fARBFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> GLfloat -> IO ())
glUniform3fARBFunPtr = unsafePerformIO (getProcAddress "glUniform3fARB")

{-# NOINLINE glUniform3fARBFunPtr #-}

glUniform3fvARB :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
glUniform3fvARB = ffiintsizeiPtrfloatIOV glUniform3fvARBFunPtr

glUniform3fvARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
glUniform3fvARBFunPtr = unsafePerformIO (getProcAddress "glUniform3fvARB")

{-# NOINLINE glUniform3fvARBFunPtr #-}

glUniform3iARB :: MonadIO m => GLint -> GLint -> GLint -> GLint -> m ()
glUniform3iARB = ffiintintintintIOV glUniform3iARBFunPtr

glUniform3iARBFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> IO ())
glUniform3iARBFunPtr = unsafePerformIO (getProcAddress "glUniform3iARB")

{-# NOINLINE glUniform3iARBFunPtr #-}

glUniform3ivARB :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
glUniform3ivARB = ffiintsizeiPtrintIOV glUniform3ivARBFunPtr

glUniform3ivARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
glUniform3ivARBFunPtr = unsafePerformIO (getProcAddress "glUniform3ivARB")

{-# NOINLINE glUniform3ivARBFunPtr #-}

glUniform4fARB :: MonadIO m => GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glUniform4fARB = ffiintfloatfloatfloatfloatIOV glUniform4fARBFunPtr

glUniform4fARBFunPtr :: FunPtr (GLint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glUniform4fARBFunPtr = unsafePerformIO (getProcAddress "glUniform4fARB")

{-# NOINLINE glUniform4fARBFunPtr #-}

glUniform4fvARB :: MonadIO m => GLint -> GLsizei -> Ptr GLfloat -> m ()
glUniform4fvARB = ffiintsizeiPtrfloatIOV glUniform4fvARBFunPtr

glUniform4fvARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLfloat -> IO ())
glUniform4fvARBFunPtr = unsafePerformIO (getProcAddress "glUniform4fvARB")

{-# NOINLINE glUniform4fvARBFunPtr #-}

glUniform4iARB :: MonadIO m => GLint -> GLint -> GLint -> GLint -> GLint -> m ()
glUniform4iARB = ffiintintintintintIOV glUniform4iARBFunPtr

glUniform4iARBFunPtr :: FunPtr (GLint -> GLint -> GLint -> GLint -> GLint -> IO ())
glUniform4iARBFunPtr = unsafePerformIO (getProcAddress "glUniform4iARB")

{-# NOINLINE glUniform4iARBFunPtr #-}

glUniform4ivARB :: MonadIO m => GLint -> GLsizei -> Ptr GLint -> m ()
glUniform4ivARB = ffiintsizeiPtrintIOV glUniform4ivARBFunPtr

glUniform4ivARBFunPtr :: FunPtr (GLint -> GLsizei -> Ptr GLint -> IO ())
glUniform4ivARBFunPtr = unsafePerformIO (getProcAddress "glUniform4ivARB")

{-# NOINLINE glUniform4ivARBFunPtr #-}

glUniformMatrix2fvARB :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glUniformMatrix2fvARB = ffiintsizeibooleanPtrfloatIOV glUniformMatrix2fvARBFunPtr

glUniformMatrix2fvARBFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glUniformMatrix2fvARBFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix2fvARB")

{-# NOINLINE glUniformMatrix2fvARBFunPtr #-}

glUniformMatrix3fvARB :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glUniformMatrix3fvARB = ffiintsizeibooleanPtrfloatIOV glUniformMatrix3fvARBFunPtr

glUniformMatrix3fvARBFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glUniformMatrix3fvARBFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix3fvARB")

{-# NOINLINE glUniformMatrix3fvARBFunPtr #-}

glUniformMatrix4fvARB :: MonadIO m => GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> m ()
glUniformMatrix4fvARB = ffiintsizeibooleanPtrfloatIOV glUniformMatrix4fvARBFunPtr

glUniformMatrix4fvARBFunPtr :: FunPtr (GLint -> GLsizei -> GLboolean -> Ptr GLfloat -> IO ())
glUniformMatrix4fvARBFunPtr = unsafePerformIO (getProcAddress "glUniformMatrix4fvARB")

{-# NOINLINE glUniformMatrix4fvARBFunPtr #-}

glUseProgramObjectARB :: MonadIO m => GLhandleARB -> m ()
glUseProgramObjectARB = ffihandleARBIOV glUseProgramObjectARBFunPtr

glUseProgramObjectARBFunPtr :: FunPtr (GLhandleARB -> IO ())
glUseProgramObjectARBFunPtr = unsafePerformIO (getProcAddress "glUseProgramObjectARB")

{-# NOINLINE glUseProgramObjectARBFunPtr #-}

glValidateProgramARB :: MonadIO m => GLhandleARB -> m ()
glValidateProgramARB = ffihandleARBIOV glValidateProgramARBFunPtr

glValidateProgramARBFunPtr :: FunPtr (GLhandleARB -> IO ())
glValidateProgramARBFunPtr = unsafePerformIO (getProcAddress "glValidateProgramARB")

{-# NOINLINE glValidateProgramARBFunPtr #-}

pattern GL_BOOL_ARB = 0x8B56

pattern GL_BOOL_VEC2_ARB = 0x8B57

pattern GL_BOOL_VEC3_ARB = 0x8B58

pattern GL_BOOL_VEC4_ARB = 0x8B59

pattern GL_INT_VEC2_ARB = 0x8B53

pattern GL_INT_VEC3_ARB = 0x8B54

pattern GL_INT_VEC4_ARB = 0x8B55

pattern GL_OBJECT_ACTIVE_UNIFORMS_ARB = 0x8B86

pattern GL_OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB = 0x8B87

pattern GL_OBJECT_ATTACHED_OBJECTS_ARB = 0x8B85

pattern GL_OBJECT_COMPILE_STATUS_ARB = 0x8B81

pattern GL_OBJECT_DELETE_STATUS_ARB = 0x8B80

pattern GL_OBJECT_INFO_LOG_LENGTH_ARB = 0x8B84

pattern GL_OBJECT_LINK_STATUS_ARB = 0x8B82

pattern GL_OBJECT_SHADER_SOURCE_LENGTH_ARB = 0x8B88

pattern GL_OBJECT_SUBTYPE_ARB = 0x8B4F

pattern GL_OBJECT_TYPE_ARB = 0x8B4E

pattern GL_OBJECT_VALIDATE_STATUS_ARB = 0x8B83

pattern GL_PROGRAM_OBJECT_ARB = 0x8B40

pattern GL_SAMPLER_1D_ARB = 0x8B5D

pattern GL_SAMPLER_1D_SHADOW_ARB = 0x8B61

pattern GL_SAMPLER_2D_ARB = 0x8B5E

pattern GL_SAMPLER_2D_RECT_ARB = 0x8B63

pattern GL_SAMPLER_2D_RECT_SHADOW_ARB = 0x8B64

pattern GL_SAMPLER_2D_SHADOW_ARB = 0x8B62

pattern GL_SAMPLER_3D_ARB = 0x8B5F

pattern GL_SAMPLER_CUBE_ARB = 0x8B60

pattern GL_SHADER_OBJECT_ARB = 0x8B48