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

  -- * GL_ARB_multitexture
  , glActiveTextureARB
  , glClientActiveTextureARB
  , glMultiTexCoord1dARB
  , glMultiTexCoord1dvARB
  , glMultiTexCoord1fARB
  , glMultiTexCoord1fvARB
  , glMultiTexCoord1iARB
  , glMultiTexCoord1ivARB
  , glMultiTexCoord1sARB
  , glMultiTexCoord1svARB
  , glMultiTexCoord2dARB
  , glMultiTexCoord2dvARB
  , glMultiTexCoord2fARB
  , glMultiTexCoord2fvARB
  , glMultiTexCoord2iARB
  , glMultiTexCoord2ivARB
  , glMultiTexCoord2sARB
  , glMultiTexCoord2svARB
  , glMultiTexCoord3dARB
  , glMultiTexCoord3dvARB
  , glMultiTexCoord3fARB
  , glMultiTexCoord3fvARB
  , glMultiTexCoord3iARB
  , glMultiTexCoord3ivARB
  , glMultiTexCoord3sARB
  , glMultiTexCoord3svARB
  , glMultiTexCoord4dARB
  , glMultiTexCoord4dvARB
  , glMultiTexCoord4fARB
  , glMultiTexCoord4fvARB
  , glMultiTexCoord4iARB
  , glMultiTexCoord4ivARB
  , glMultiTexCoord4sARB
  , glMultiTexCoord4svARB
  , pattern GL_ACTIVE_TEXTURE_ARB
  , pattern GL_CLIENT_ACTIVE_TEXTURE_ARB
  , pattern GL_MAX_TEXTURE_UNITS_ARB
  , pattern GL_TEXTURE0_ARB
  , pattern GL_TEXTURE10_ARB
  , pattern GL_TEXTURE11_ARB
  , pattern GL_TEXTURE12_ARB
  , pattern GL_TEXTURE13_ARB
  , pattern GL_TEXTURE14_ARB
  , pattern GL_TEXTURE15_ARB
  , pattern GL_TEXTURE16_ARB
  , pattern GL_TEXTURE17_ARB
  , pattern GL_TEXTURE18_ARB
  , pattern GL_TEXTURE19_ARB
  , pattern GL_TEXTURE1_ARB
  , pattern GL_TEXTURE20_ARB
  , pattern GL_TEXTURE21_ARB
  , pattern GL_TEXTURE22_ARB
  , pattern GL_TEXTURE23_ARB
  , pattern GL_TEXTURE24_ARB
  , pattern GL_TEXTURE25_ARB
  , pattern GL_TEXTURE26_ARB
  , pattern GL_TEXTURE27_ARB
  , pattern GL_TEXTURE28_ARB
  , pattern GL_TEXTURE29_ARB
  , pattern GL_TEXTURE2_ARB
  , pattern GL_TEXTURE30_ARB
  , pattern GL_TEXTURE31_ARB
  , pattern GL_TEXTURE3_ARB
  , pattern GL_TEXTURE4_ARB
  , pattern GL_TEXTURE5_ARB
  , pattern GL_TEXTURE6_ARB
  , pattern GL_TEXTURE7_ARB
  , pattern GL_TEXTURE8_ARB
  , pattern GL_TEXTURE9_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_multitexture :: Bool
gl_ARB_multitexture = member "GL_ARB_multitexture" extensions

glActiveTextureARB :: MonadIO m => GLenum -> m ()
glActiveTextureARB = ffienumIOV glActiveTextureARBFunPtr

glActiveTextureARBFunPtr :: FunPtr (GLenum -> IO ())
glActiveTextureARBFunPtr = unsafePerformIO (getProcAddress "glActiveTextureARB")

{-# NOINLINE glActiveTextureARBFunPtr #-}

glClientActiveTextureARB :: MonadIO m => GLenum -> m ()
glClientActiveTextureARB = ffienumIOV glClientActiveTextureARBFunPtr

glClientActiveTextureARBFunPtr :: FunPtr (GLenum -> IO ())
glClientActiveTextureARBFunPtr = unsafePerformIO (getProcAddress "glClientActiveTextureARB")

{-# NOINLINE glClientActiveTextureARBFunPtr #-}

glMultiTexCoord1dARB :: MonadIO m => GLenum -> GLdouble -> m ()
glMultiTexCoord1dARB = ffienumdoubleIOV glMultiTexCoord1dARBFunPtr

glMultiTexCoord1dARBFunPtr :: FunPtr (GLenum -> GLdouble -> IO ())
glMultiTexCoord1dARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1dARB")

{-# NOINLINE glMultiTexCoord1dARBFunPtr #-}

glMultiTexCoord1dvARB :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glMultiTexCoord1dvARB = ffienumPtrdoubleIOV glMultiTexCoord1dvARBFunPtr

glMultiTexCoord1dvARBFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glMultiTexCoord1dvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1dvARB")

{-# NOINLINE glMultiTexCoord1dvARBFunPtr #-}

glMultiTexCoord1fARB :: MonadIO m => GLenum -> GLfloat -> m ()
glMultiTexCoord1fARB = ffienumfloatIOV glMultiTexCoord1fARBFunPtr

glMultiTexCoord1fARBFunPtr :: FunPtr (GLenum -> GLfloat -> IO ())
glMultiTexCoord1fARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1fARB")

{-# NOINLINE glMultiTexCoord1fARBFunPtr #-}

glMultiTexCoord1fvARB :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glMultiTexCoord1fvARB = ffienumPtrfloatIOV glMultiTexCoord1fvARBFunPtr

glMultiTexCoord1fvARBFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glMultiTexCoord1fvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1fvARB")

{-# NOINLINE glMultiTexCoord1fvARBFunPtr #-}

glMultiTexCoord1iARB :: MonadIO m => GLenum -> GLint -> m ()
glMultiTexCoord1iARB = ffienumintIOV glMultiTexCoord1iARBFunPtr

glMultiTexCoord1iARBFunPtr :: FunPtr (GLenum -> GLint -> IO ())
glMultiTexCoord1iARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1iARB")

{-# NOINLINE glMultiTexCoord1iARBFunPtr #-}

glMultiTexCoord1ivARB :: MonadIO m => GLenum -> Ptr GLint -> m ()
glMultiTexCoord1ivARB = ffienumPtrintIOV glMultiTexCoord1ivARBFunPtr

glMultiTexCoord1ivARBFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glMultiTexCoord1ivARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1ivARB")

{-# NOINLINE glMultiTexCoord1ivARBFunPtr #-}

glMultiTexCoord1sARB :: MonadIO m => GLenum -> GLshort -> m ()
glMultiTexCoord1sARB = ffienumshortIOV glMultiTexCoord1sARBFunPtr

glMultiTexCoord1sARBFunPtr :: FunPtr (GLenum -> GLshort -> IO ())
glMultiTexCoord1sARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1sARB")

{-# NOINLINE glMultiTexCoord1sARBFunPtr #-}

glMultiTexCoord1svARB :: MonadIO m => GLenum -> Ptr GLshort -> m ()
glMultiTexCoord1svARB = ffienumPtrshortIOV glMultiTexCoord1svARBFunPtr

glMultiTexCoord1svARBFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
glMultiTexCoord1svARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord1svARB")

{-# NOINLINE glMultiTexCoord1svARBFunPtr #-}

glMultiTexCoord2dARB :: MonadIO m => GLenum -> GLdouble -> GLdouble -> m ()
glMultiTexCoord2dARB = ffienumdoubledoubleIOV glMultiTexCoord2dARBFunPtr

glMultiTexCoord2dARBFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> IO ())
glMultiTexCoord2dARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2dARB")

{-# NOINLINE glMultiTexCoord2dARBFunPtr #-}

glMultiTexCoord2dvARB :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glMultiTexCoord2dvARB = ffienumPtrdoubleIOV glMultiTexCoord2dvARBFunPtr

glMultiTexCoord2dvARBFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glMultiTexCoord2dvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2dvARB")

{-# NOINLINE glMultiTexCoord2dvARBFunPtr #-}

glMultiTexCoord2fARB :: MonadIO m => GLenum -> GLfloat -> GLfloat -> m ()
glMultiTexCoord2fARB = ffienumfloatfloatIOV glMultiTexCoord2fARBFunPtr

glMultiTexCoord2fARBFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> IO ())
glMultiTexCoord2fARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2fARB")

{-# NOINLINE glMultiTexCoord2fARBFunPtr #-}

glMultiTexCoord2fvARB :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glMultiTexCoord2fvARB = ffienumPtrfloatIOV glMultiTexCoord2fvARBFunPtr

glMultiTexCoord2fvARBFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glMultiTexCoord2fvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2fvARB")

{-# NOINLINE glMultiTexCoord2fvARBFunPtr #-}

glMultiTexCoord2iARB :: MonadIO m => GLenum -> GLint -> GLint -> m ()
glMultiTexCoord2iARB = ffienumintintIOV glMultiTexCoord2iARBFunPtr

glMultiTexCoord2iARBFunPtr :: FunPtr (GLenum -> GLint -> GLint -> IO ())
glMultiTexCoord2iARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2iARB")

{-# NOINLINE glMultiTexCoord2iARBFunPtr #-}

glMultiTexCoord2ivARB :: MonadIO m => GLenum -> Ptr GLint -> m ()
glMultiTexCoord2ivARB = ffienumPtrintIOV glMultiTexCoord2ivARBFunPtr

glMultiTexCoord2ivARBFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glMultiTexCoord2ivARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2ivARB")

{-# NOINLINE glMultiTexCoord2ivARBFunPtr #-}

glMultiTexCoord2sARB :: MonadIO m => GLenum -> GLshort -> GLshort -> m ()
glMultiTexCoord2sARB = ffienumshortshortIOV glMultiTexCoord2sARBFunPtr

glMultiTexCoord2sARBFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> IO ())
glMultiTexCoord2sARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2sARB")

{-# NOINLINE glMultiTexCoord2sARBFunPtr #-}

glMultiTexCoord2svARB :: MonadIO m => GLenum -> Ptr GLshort -> m ()
glMultiTexCoord2svARB = ffienumPtrshortIOV glMultiTexCoord2svARBFunPtr

glMultiTexCoord2svARBFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
glMultiTexCoord2svARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord2svARB")

{-# NOINLINE glMultiTexCoord2svARBFunPtr #-}

glMultiTexCoord3dARB :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> m ()
glMultiTexCoord3dARB = ffienumdoubledoubledoubleIOV glMultiTexCoord3dARBFunPtr

glMultiTexCoord3dARBFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> IO ())
glMultiTexCoord3dARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3dARB")

{-# NOINLINE glMultiTexCoord3dARBFunPtr #-}

glMultiTexCoord3dvARB :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glMultiTexCoord3dvARB = ffienumPtrdoubleIOV glMultiTexCoord3dvARBFunPtr

glMultiTexCoord3dvARBFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glMultiTexCoord3dvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3dvARB")

{-# NOINLINE glMultiTexCoord3dvARBFunPtr #-}

glMultiTexCoord3fARB :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLfloat -> m ()
glMultiTexCoord3fARB = ffienumfloatfloatfloatIOV glMultiTexCoord3fARBFunPtr

glMultiTexCoord3fARBFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> IO ())
glMultiTexCoord3fARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3fARB")

{-# NOINLINE glMultiTexCoord3fARBFunPtr #-}

glMultiTexCoord3fvARB :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glMultiTexCoord3fvARB = ffienumPtrfloatIOV glMultiTexCoord3fvARBFunPtr

glMultiTexCoord3fvARBFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glMultiTexCoord3fvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3fvARB")

{-# NOINLINE glMultiTexCoord3fvARBFunPtr #-}

glMultiTexCoord3iARB :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> m ()
glMultiTexCoord3iARB = ffienumintintintIOV glMultiTexCoord3iARBFunPtr

glMultiTexCoord3iARBFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> IO ())
glMultiTexCoord3iARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3iARB")

{-# NOINLINE glMultiTexCoord3iARBFunPtr #-}

glMultiTexCoord3ivARB :: MonadIO m => GLenum -> Ptr GLint -> m ()
glMultiTexCoord3ivARB = ffienumPtrintIOV glMultiTexCoord3ivARBFunPtr

glMultiTexCoord3ivARBFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glMultiTexCoord3ivARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3ivARB")

{-# NOINLINE glMultiTexCoord3ivARBFunPtr #-}

glMultiTexCoord3sARB :: MonadIO m => GLenum -> GLshort -> GLshort -> GLshort -> m ()
glMultiTexCoord3sARB = ffienumshortshortshortIOV glMultiTexCoord3sARBFunPtr

glMultiTexCoord3sARBFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> IO ())
glMultiTexCoord3sARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3sARB")

{-# NOINLINE glMultiTexCoord3sARBFunPtr #-}

glMultiTexCoord3svARB :: MonadIO m => GLenum -> Ptr GLshort -> m ()
glMultiTexCoord3svARB = ffienumPtrshortIOV glMultiTexCoord3svARBFunPtr

glMultiTexCoord3svARBFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
glMultiTexCoord3svARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord3svARB")

{-# NOINLINE glMultiTexCoord3svARBFunPtr #-}

glMultiTexCoord4dARB :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glMultiTexCoord4dARB = ffienumdoubledoubledoubledoubleIOV glMultiTexCoord4dARBFunPtr

glMultiTexCoord4dARBFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glMultiTexCoord4dARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4dARB")

{-# NOINLINE glMultiTexCoord4dARBFunPtr #-}

glMultiTexCoord4dvARB :: MonadIO m => GLenum -> Ptr GLdouble -> m ()
glMultiTexCoord4dvARB = ffienumPtrdoubleIOV glMultiTexCoord4dvARBFunPtr

glMultiTexCoord4dvARBFunPtr :: FunPtr (GLenum -> Ptr GLdouble -> IO ())
glMultiTexCoord4dvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4dvARB")

{-# NOINLINE glMultiTexCoord4dvARBFunPtr #-}

glMultiTexCoord4fARB :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
glMultiTexCoord4fARB = ffienumfloatfloatfloatfloatIOV glMultiTexCoord4fARBFunPtr

glMultiTexCoord4fARBFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ())
glMultiTexCoord4fARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4fARB")

{-# NOINLINE glMultiTexCoord4fARBFunPtr #-}

glMultiTexCoord4fvARB :: MonadIO m => GLenum -> Ptr GLfloat -> m ()
glMultiTexCoord4fvARB = ffienumPtrfloatIOV glMultiTexCoord4fvARBFunPtr

glMultiTexCoord4fvARBFunPtr :: FunPtr (GLenum -> Ptr GLfloat -> IO ())
glMultiTexCoord4fvARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4fvARB")

{-# NOINLINE glMultiTexCoord4fvARBFunPtr #-}

glMultiTexCoord4iARB :: MonadIO m => GLenum -> GLint -> GLint -> GLint -> GLint -> m ()
glMultiTexCoord4iARB = ffienumintintintintIOV glMultiTexCoord4iARBFunPtr

glMultiTexCoord4iARBFunPtr :: FunPtr (GLenum -> GLint -> GLint -> GLint -> GLint -> IO ())
glMultiTexCoord4iARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4iARB")

{-# NOINLINE glMultiTexCoord4iARBFunPtr #-}

glMultiTexCoord4ivARB :: MonadIO m => GLenum -> Ptr GLint -> m ()
glMultiTexCoord4ivARB = ffienumPtrintIOV glMultiTexCoord4ivARBFunPtr

glMultiTexCoord4ivARBFunPtr :: FunPtr (GLenum -> Ptr GLint -> IO ())
glMultiTexCoord4ivARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4ivARB")

{-# NOINLINE glMultiTexCoord4ivARBFunPtr #-}

glMultiTexCoord4sARB :: MonadIO m => GLenum -> GLshort -> GLshort -> GLshort -> GLshort -> m ()
glMultiTexCoord4sARB = ffienumshortshortshortshortIOV glMultiTexCoord4sARBFunPtr

glMultiTexCoord4sARBFunPtr :: FunPtr (GLenum -> GLshort -> GLshort -> GLshort -> GLshort -> IO ())
glMultiTexCoord4sARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4sARB")

{-# NOINLINE glMultiTexCoord4sARBFunPtr #-}

glMultiTexCoord4svARB :: MonadIO m => GLenum -> Ptr GLshort -> m ()
glMultiTexCoord4svARB = ffienumPtrshortIOV glMultiTexCoord4svARBFunPtr

glMultiTexCoord4svARBFunPtr :: FunPtr (GLenum -> Ptr GLshort -> IO ())
glMultiTexCoord4svARBFunPtr = unsafePerformIO (getProcAddress "glMultiTexCoord4svARB")

{-# NOINLINE glMultiTexCoord4svARBFunPtr #-}

pattern GL_ACTIVE_TEXTURE_ARB = 0x84E0 :: GLenum

pattern GL_CLIENT_ACTIVE_TEXTURE_ARB = 0x84E1 :: GLenum

pattern GL_MAX_TEXTURE_UNITS_ARB = 0x84E2 :: GLenum

pattern GL_TEXTURE10_ARB = 0x84CA :: GLenum

pattern GL_TEXTURE11_ARB = 0x84CB :: GLenum

pattern GL_TEXTURE12_ARB = 0x84CC :: GLenum

pattern GL_TEXTURE13_ARB = 0x84CD :: GLenum

pattern GL_TEXTURE14_ARB = 0x84CE :: GLenum

pattern GL_TEXTURE15_ARB = 0x84CF :: GLenum

pattern GL_TEXTURE16_ARB = 0x84D0 :: GLenum

pattern GL_TEXTURE17_ARB = 0x84D1 :: GLenum

pattern GL_TEXTURE18_ARB = 0x84D2 :: GLenum

pattern GL_TEXTURE19_ARB = 0x84D3 :: GLenum

pattern GL_TEXTURE20_ARB = 0x84D4 :: GLenum

pattern GL_TEXTURE21_ARB = 0x84D5 :: GLenum

pattern GL_TEXTURE22_ARB = 0x84D6 :: GLenum

pattern GL_TEXTURE23_ARB = 0x84D7 :: GLenum

pattern GL_TEXTURE24_ARB = 0x84D8 :: GLenum

pattern GL_TEXTURE25_ARB = 0x84D9 :: GLenum

pattern GL_TEXTURE26_ARB = 0x84DA :: GLenum

pattern GL_TEXTURE27_ARB = 0x84DB :: GLenum

pattern GL_TEXTURE28_ARB = 0x84DC :: GLenum

pattern GL_TEXTURE29_ARB = 0x84DD :: GLenum

pattern GL_TEXTURE2_ARB = 0x84C2 :: GLenum

pattern GL_TEXTURE30_ARB = 0x84DE :: GLenum

pattern GL_TEXTURE31_ARB = 0x84DF :: GLenum

pattern GL_TEXTURE3_ARB = 0x84C3 :: GLenum

pattern GL_TEXTURE4_ARB = 0x84C4 :: GLenum

pattern GL_TEXTURE5_ARB = 0x84C5 :: GLenum

pattern GL_TEXTURE6_ARB = 0x84C6 :: GLenum

pattern GL_TEXTURE7_ARB = 0x84C7 :: GLenum

pattern GL_TEXTURE8_ARB = 0x84C8 :: GLenum

pattern GL_TEXTURE9_ARB = 0x84C9 :: GLenum