-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.EXT.CoordinateFrame (
  -- * Extension Support
    gl_EXT_coordinate_frame

  -- * GL_EXT_coordinate_frame
  , glBinormal3bEXT
  , glBinormal3bvEXT
  , glBinormal3dEXT
  , glBinormal3dvEXT
  , glBinormal3fEXT
  , glBinormal3fvEXT
  , glBinormal3iEXT
  , glBinormal3ivEXT
  , glBinormal3sEXT
  , glBinormal3svEXT
  , glBinormalPointerEXT
  , glTangent3bEXT
  , glTangent3bvEXT
  , glTangent3dEXT
  , glTangent3dvEXT
  , glTangent3fEXT
  , glTangent3fvEXT
  , glTangent3iEXT
  , glTangent3ivEXT
  , glTangent3sEXT
  , glTangent3svEXT
  , glTangentPointerEXT
  , pattern GL_BINORMAL_ARRAY_EXT
  , pattern GL_BINORMAL_ARRAY_POINTER_EXT
  , pattern GL_BINORMAL_ARRAY_STRIDE_EXT
  , pattern GL_BINORMAL_ARRAY_TYPE_EXT
  , pattern GL_CURRENT_BINORMAL_EXT
  , pattern GL_CURRENT_TANGENT_EXT
  , pattern GL_MAP1_BINORMAL_EXT
  , pattern GL_MAP1_TANGENT_EXT
  , pattern GL_MAP2_BINORMAL_EXT
  , pattern GL_MAP2_TANGENT_EXT
  , pattern GL_TANGENT_ARRAY_EXT
  , pattern GL_TANGENT_ARRAY_POINTER_EXT
  , pattern GL_TANGENT_ARRAY_STRIDE_EXT
  , pattern GL_TANGENT_ARRAY_TYPE_EXT
) 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/EXT/coordinate_frame.txt GL_EXT_coordinate_frame> extension is available.

gl_EXT_coordinate_frame :: Bool
gl_EXT_coordinate_frame :: Bool
gl_EXT_coordinate_frame = [Char] -> Set [Char] -> Bool
forall a. Ord a => a -> Set a -> Bool
member "GL_EXT_coordinate_frame" Set [Char]
extensions
{-# NOINLINE gl_EXT_coordinate_frame #-}

-- | Usage: @'glBinormal3bEXT' bx by bz@
--
-- The vector equivalent of this command is 'Graphics.GL.Ext.EXT.CoordinateFrame.glBinormal3bvEXT'.


glBinormal3bEXT :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> m ()
glBinormal3bEXT :: GLbyte -> GLbyte -> GLbyte -> m ()
glBinormal3bEXT = FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
-> GLbyte -> GLbyte -> GLbyte -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
-> GLbyte -> GLbyte -> GLbyte -> m ()
ffibytebytebyteIOV FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
glBinormal3bEXTFunPtr

glBinormal3bEXTFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
glBinormal3bEXTFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
glBinormal3bEXTFunPtr = IO (FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ()))
-> FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBinormal3bEXT")

{-# NOINLINE glBinormal3bEXTFunPtr #-}

-- | Usage: @'glBinormal3bvEXT' v@
--
-- The length of @v@ should be @3@.


glBinormal3bvEXT :: MonadIO m => Ptr GLbyte -> m ()
glBinormal3bvEXT :: Ptr GLbyte -> m ()
glBinormal3bvEXT = FunPtr (Ptr GLbyte -> IO ()) -> Ptr GLbyte -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLbyte -> IO ()) -> Ptr GLbyte -> m ()
ffiPtrbyteIOV FunPtr (Ptr GLbyte -> IO ())
glBinormal3bvEXTFunPtr

glBinormal3bvEXTFunPtr :: FunPtr (Ptr GLbyte -> IO ())
glBinormal3bvEXTFunPtr :: FunPtr (Ptr GLbyte -> IO ())
glBinormal3bvEXTFunPtr = IO (FunPtr (Ptr GLbyte -> IO ())) -> FunPtr (Ptr GLbyte -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (Ptr GLbyte -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBinormal3bvEXT")

{-# NOINLINE glBinormal3bvEXTFunPtr #-}

-- | Usage: @'glBinormal3dEXT' bx by bz@
--
-- The parameter @bx@ is a @CoordD@.
--
-- The parameter @by@ is a @CoordD@.
--
-- The parameter @bz@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Ext.EXT.CoordinateFrame.glBinormal3dvEXT'.


glBinormal3dEXT :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glBinormal3dEXT :: GLdouble -> GLdouble -> GLdouble -> m ()
glBinormal3dEXT = FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
-> GLdouble -> GLdouble -> GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
-> GLdouble -> GLdouble -> GLdouble -> m ()
ffidoubledoubledoubleIOV FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glBinormal3dEXTFunPtr

glBinormal3dEXTFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glBinormal3dEXTFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glBinormal3dEXTFunPtr = IO (FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ()))
-> FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBinormal3dEXT")

{-# NOINLINE glBinormal3dEXTFunPtr #-}

-- | Usage: @'glBinormal3dvEXT' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @3@.


glBinormal3dvEXT :: MonadIO m => Ptr GLdouble -> m ()
glBinormal3dvEXT :: Ptr GLdouble -> m ()
glBinormal3dvEXT = FunPtr (Ptr GLdouble -> IO ()) -> Ptr GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLdouble -> IO ()) -> Ptr GLdouble -> m ()
ffiPtrdoubleIOV FunPtr (Ptr GLdouble -> IO ())
glBinormal3dvEXTFunPtr

glBinormal3dvEXTFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glBinormal3dvEXTFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glBinormal3dvEXTFunPtr = IO (FunPtr (Ptr GLdouble -> IO ()))
-> FunPtr (Ptr GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (Ptr GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBinormal3dvEXT")

{-# NOINLINE glBinormal3dvEXTFunPtr #-}

-- | Usage: @'glBinormal3fEXT' bx by bz@
--
-- The parameter @bx@ is a @CoordF@.
--
-- The parameter @by@ is a @CoordF@.
--
-- The parameter @bz@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Ext.EXT.CoordinateFrame.glBinormal3fvEXT'.


glBinormal3fEXT :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glBinormal3fEXT :: GLfloat -> GLfloat -> GLfloat -> m ()
glBinormal3fEXT = FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
-> GLfloat -> GLfloat -> GLfloat -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
-> GLfloat -> GLfloat -> GLfloat -> m ()
ffifloatfloatfloatIOV FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glBinormal3fEXTFunPtr

glBinormal3fEXTFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glBinormal3fEXTFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glBinormal3fEXTFunPtr = IO (FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ()))
-> FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBinormal3fEXT")

{-# NOINLINE glBinormal3fEXTFunPtr #-}

-- | Usage: @'glBinormal3fvEXT' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @3@.


glBinormal3fvEXT :: MonadIO m => Ptr GLfloat -> m ()
glBinormal3fvEXT :: Ptr GLfloat -> m ()
glBinormal3fvEXT = FunPtr (Ptr GLfloat -> IO ()) -> Ptr GLfloat -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLfloat -> IO ()) -> Ptr GLfloat -> m ()
ffiPtrfloatIOV FunPtr (Ptr GLfloat -> IO ())
glBinormal3fvEXTFunPtr

glBinormal3fvEXTFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glBinormal3fvEXTFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glBinormal3fvEXTFunPtr = IO (FunPtr (Ptr GLfloat -> IO ())) -> FunPtr (Ptr GLfloat -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (Ptr GLfloat -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBinormal3fvEXT")

{-# NOINLINE glBinormal3fvEXTFunPtr #-}

-- | Usage: @'glBinormal3iEXT' bx by bz@
--
-- The vector equivalent of this command is 'Graphics.GL.Ext.EXT.CoordinateFrame.glBinormal3ivEXT'.


glBinormal3iEXT :: MonadIO m => GLint -> GLint -> GLint -> m ()
glBinormal3iEXT :: GLint -> GLint -> GLint -> m ()
glBinormal3iEXT = FunPtr (GLint -> GLint -> GLint -> IO ())
-> GLint -> GLint -> GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLint -> GLint -> GLint -> IO ())
-> GLint -> GLint -> GLint -> m ()
ffiintintintIOV FunPtr (GLint -> GLint -> GLint -> IO ())
glBinormal3iEXTFunPtr

glBinormal3iEXTFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glBinormal3iEXTFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glBinormal3iEXTFunPtr = IO (FunPtr (GLint -> GLint -> GLint -> IO ()))
-> FunPtr (GLint -> GLint -> GLint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLint -> GLint -> GLint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBinormal3iEXT")

{-# NOINLINE glBinormal3iEXTFunPtr #-}

-- | Usage: @'glBinormal3ivEXT' v@
--
-- The length of @v@ should be @3@.


glBinormal3ivEXT :: MonadIO m => Ptr GLint -> m ()
glBinormal3ivEXT :: Ptr GLint -> m ()
glBinormal3ivEXT = FunPtr (Ptr GLint -> IO ()) -> Ptr GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLint -> IO ()) -> Ptr GLint -> m ()
ffiPtrintIOV FunPtr (Ptr GLint -> IO ())
glBinormal3ivEXTFunPtr

glBinormal3ivEXTFunPtr :: FunPtr (Ptr GLint -> IO ())
glBinormal3ivEXTFunPtr :: FunPtr (Ptr GLint -> IO ())
glBinormal3ivEXTFunPtr = IO (FunPtr (Ptr GLint -> IO ())) -> FunPtr (Ptr GLint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (Ptr GLint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBinormal3ivEXT")

{-# NOINLINE glBinormal3ivEXTFunPtr #-}

-- | Usage: @'glBinormal3sEXT' bx by bz@
--
-- The vector equivalent of this command is 'Graphics.GL.Ext.EXT.CoordinateFrame.glBinormal3svEXT'.


glBinormal3sEXT :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glBinormal3sEXT :: GLshort -> GLshort -> GLshort -> m ()
glBinormal3sEXT = FunPtr (GLshort -> GLshort -> GLshort -> IO ())
-> GLshort -> GLshort -> GLshort -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLshort -> GLshort -> GLshort -> IO ())
-> GLshort -> GLshort -> GLshort -> m ()
ffishortshortshortIOV FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glBinormal3sEXTFunPtr

glBinormal3sEXTFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glBinormal3sEXTFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glBinormal3sEXTFunPtr = IO (FunPtr (GLshort -> GLshort -> GLshort -> IO ()))
-> FunPtr (GLshort -> GLshort -> GLshort -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLshort -> GLshort -> GLshort -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBinormal3sEXT")

{-# NOINLINE glBinormal3sEXTFunPtr #-}

-- | Usage: @'glBinormal3svEXT' v@
--
-- The length of @v@ should be @3@.


glBinormal3svEXT :: MonadIO m => Ptr GLshort -> m ()
glBinormal3svEXT :: Ptr GLshort -> m ()
glBinormal3svEXT = FunPtr (Ptr GLshort -> IO ()) -> Ptr GLshort -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLshort -> IO ()) -> Ptr GLshort -> m ()
ffiPtrshortIOV FunPtr (Ptr GLshort -> IO ())
glBinormal3svEXTFunPtr

glBinormal3svEXTFunPtr :: FunPtr (Ptr GLshort -> IO ())
glBinormal3svEXTFunPtr :: FunPtr (Ptr GLshort -> IO ())
glBinormal3svEXTFunPtr = IO (FunPtr (Ptr GLshort -> IO ())) -> FunPtr (Ptr GLshort -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (Ptr GLshort -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBinormal3svEXT")

{-# NOINLINE glBinormal3svEXTFunPtr #-}

-- | Usage: @'glBinormalPointerEXT' type stride pointer@
--
-- The parameter @type@ is a @BinormalPointerTypeEXT@.
--
-- The length of @pointer@ should be @COMPSIZE(type,stride)@.


glBinormalPointerEXT :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
glBinormalPointerEXT :: GLenum -> GLint -> Ptr () -> m ()
glBinormalPointerEXT = FunPtr (GLenum -> GLint -> Ptr () -> IO ())
-> GLenum -> GLint -> Ptr () -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLint -> Ptr () -> IO ())
-> GLenum -> GLint -> Ptr () -> m ()
ffienumsizeiPtrVIOV FunPtr (GLenum -> GLint -> Ptr () -> IO ())
glBinormalPointerEXTFunPtr

glBinormalPointerEXTFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
glBinormalPointerEXTFunPtr :: FunPtr (GLenum -> GLint -> Ptr () -> IO ())
glBinormalPointerEXTFunPtr = IO (FunPtr (GLenum -> GLint -> Ptr () -> IO ()))
-> FunPtr (GLenum -> GLint -> Ptr () -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> GLint -> Ptr () -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBinormalPointerEXT")

{-# NOINLINE glBinormalPointerEXTFunPtr #-}

-- | Usage: @'glTangent3bEXT' tx ty tz@
--
-- The vector equivalent of this command is 'Graphics.GL.Ext.EXT.CoordinateFrame.glTangent3bvEXT'.


glTangent3bEXT :: MonadIO m => GLbyte -> GLbyte -> GLbyte -> m ()
glTangent3bEXT :: GLbyte -> GLbyte -> GLbyte -> m ()
glTangent3bEXT = FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
-> GLbyte -> GLbyte -> GLbyte -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
-> GLbyte -> GLbyte -> GLbyte -> m ()
ffibytebytebyteIOV FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
glTangent3bEXTFunPtr

glTangent3bEXTFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
glTangent3bEXTFunPtr :: FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
glTangent3bEXTFunPtr = IO (FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ()))
-> FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLbyte -> GLbyte -> GLbyte -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTangent3bEXT")

{-# NOINLINE glTangent3bEXTFunPtr #-}

-- | Usage: @'glTangent3bvEXT' v@
--
-- The length of @v@ should be @3@.


glTangent3bvEXT :: MonadIO m => Ptr GLbyte -> m ()
glTangent3bvEXT :: Ptr GLbyte -> m ()
glTangent3bvEXT = FunPtr (Ptr GLbyte -> IO ()) -> Ptr GLbyte -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLbyte -> IO ()) -> Ptr GLbyte -> m ()
ffiPtrbyteIOV FunPtr (Ptr GLbyte -> IO ())
glTangent3bvEXTFunPtr

glTangent3bvEXTFunPtr :: FunPtr (Ptr GLbyte -> IO ())
glTangent3bvEXTFunPtr :: FunPtr (Ptr GLbyte -> IO ())
glTangent3bvEXTFunPtr = IO (FunPtr (Ptr GLbyte -> IO ())) -> FunPtr (Ptr GLbyte -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (Ptr GLbyte -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTangent3bvEXT")

{-# NOINLINE glTangent3bvEXTFunPtr #-}

-- | Usage: @'glTangent3dEXT' tx ty tz@
--
-- The parameter @tx@ is a @CoordD@.
--
-- The parameter @ty@ is a @CoordD@.
--
-- The parameter @tz@ is a @CoordD@.
--
-- The vector equivalent of this command is 'Graphics.GL.Ext.EXT.CoordinateFrame.glTangent3dvEXT'.


glTangent3dEXT :: MonadIO m => GLdouble -> GLdouble -> GLdouble -> m ()
glTangent3dEXT :: GLdouble -> GLdouble -> GLdouble -> m ()
glTangent3dEXT = FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
-> GLdouble -> GLdouble -> GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
-> GLdouble -> GLdouble -> GLdouble -> m ()
ffidoubledoubledoubleIOV FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glTangent3dEXTFunPtr

glTangent3dEXTFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glTangent3dEXTFunPtr :: FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
glTangent3dEXTFunPtr = IO (FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ()))
-> FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLdouble -> GLdouble -> GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTangent3dEXT")

{-# NOINLINE glTangent3dEXTFunPtr #-}

-- | Usage: @'glTangent3dvEXT' v@
--
-- The parameter @v@ is a @CoordD@.
--
-- The length of @v@ should be @3@.


glTangent3dvEXT :: MonadIO m => Ptr GLdouble -> m ()
glTangent3dvEXT :: Ptr GLdouble -> m ()
glTangent3dvEXT = FunPtr (Ptr GLdouble -> IO ()) -> Ptr GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLdouble -> IO ()) -> Ptr GLdouble -> m ()
ffiPtrdoubleIOV FunPtr (Ptr GLdouble -> IO ())
glTangent3dvEXTFunPtr

glTangent3dvEXTFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glTangent3dvEXTFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glTangent3dvEXTFunPtr = IO (FunPtr (Ptr GLdouble -> IO ()))
-> FunPtr (Ptr GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (Ptr GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTangent3dvEXT")

{-# NOINLINE glTangent3dvEXTFunPtr #-}

-- | Usage: @'glTangent3fEXT' tx ty tz@
--
-- The parameter @tx@ is a @CoordF@.
--
-- The parameter @ty@ is a @CoordF@.
--
-- The parameter @tz@ is a @CoordF@.
--
-- The vector equivalent of this command is 'Graphics.GL.Ext.EXT.CoordinateFrame.glTangent3fvEXT'.


glTangent3fEXT :: MonadIO m => GLfloat -> GLfloat -> GLfloat -> m ()
glTangent3fEXT :: GLfloat -> GLfloat -> GLfloat -> m ()
glTangent3fEXT = FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
-> GLfloat -> GLfloat -> GLfloat -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
-> GLfloat -> GLfloat -> GLfloat -> m ()
ffifloatfloatfloatIOV FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glTangent3fEXTFunPtr

glTangent3fEXTFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glTangent3fEXTFunPtr :: FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
glTangent3fEXTFunPtr = IO (FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ()))
-> FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLfloat -> GLfloat -> GLfloat -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTangent3fEXT")

{-# NOINLINE glTangent3fEXTFunPtr #-}

-- | Usage: @'glTangent3fvEXT' v@
--
-- The parameter @v@ is a @CoordF@.
--
-- The length of @v@ should be @3@.


glTangent3fvEXT :: MonadIO m => Ptr GLfloat -> m ()
glTangent3fvEXT :: Ptr GLfloat -> m ()
glTangent3fvEXT = FunPtr (Ptr GLfloat -> IO ()) -> Ptr GLfloat -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLfloat -> IO ()) -> Ptr GLfloat -> m ()
ffiPtrfloatIOV FunPtr (Ptr GLfloat -> IO ())
glTangent3fvEXTFunPtr

glTangent3fvEXTFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glTangent3fvEXTFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glTangent3fvEXTFunPtr = IO (FunPtr (Ptr GLfloat -> IO ())) -> FunPtr (Ptr GLfloat -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (Ptr GLfloat -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTangent3fvEXT")

{-# NOINLINE glTangent3fvEXTFunPtr #-}

-- | Usage: @'glTangent3iEXT' tx ty tz@
--
-- The vector equivalent of this command is 'Graphics.GL.Ext.EXT.CoordinateFrame.glTangent3ivEXT'.


glTangent3iEXT :: MonadIO m => GLint -> GLint -> GLint -> m ()
glTangent3iEXT :: GLint -> GLint -> GLint -> m ()
glTangent3iEXT = FunPtr (GLint -> GLint -> GLint -> IO ())
-> GLint -> GLint -> GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLint -> GLint -> GLint -> IO ())
-> GLint -> GLint -> GLint -> m ()
ffiintintintIOV FunPtr (GLint -> GLint -> GLint -> IO ())
glTangent3iEXTFunPtr

glTangent3iEXTFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glTangent3iEXTFunPtr :: FunPtr (GLint -> GLint -> GLint -> IO ())
glTangent3iEXTFunPtr = IO (FunPtr (GLint -> GLint -> GLint -> IO ()))
-> FunPtr (GLint -> GLint -> GLint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLint -> GLint -> GLint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTangent3iEXT")

{-# NOINLINE glTangent3iEXTFunPtr #-}

-- | Usage: @'glTangent3ivEXT' v@
--
-- The length of @v@ should be @3@.


glTangent3ivEXT :: MonadIO m => Ptr GLint -> m ()
glTangent3ivEXT :: Ptr GLint -> m ()
glTangent3ivEXT = FunPtr (Ptr GLint -> IO ()) -> Ptr GLint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLint -> IO ()) -> Ptr GLint -> m ()
ffiPtrintIOV FunPtr (Ptr GLint -> IO ())
glTangent3ivEXTFunPtr

glTangent3ivEXTFunPtr :: FunPtr (Ptr GLint -> IO ())
glTangent3ivEXTFunPtr :: FunPtr (Ptr GLint -> IO ())
glTangent3ivEXTFunPtr = IO (FunPtr (Ptr GLint -> IO ())) -> FunPtr (Ptr GLint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (Ptr GLint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTangent3ivEXT")

{-# NOINLINE glTangent3ivEXTFunPtr #-}

-- | Usage: @'glTangent3sEXT' tx ty tz@
--
-- The vector equivalent of this command is 'Graphics.GL.Ext.EXT.CoordinateFrame.glTangent3svEXT'.


glTangent3sEXT :: MonadIO m => GLshort -> GLshort -> GLshort -> m ()
glTangent3sEXT :: GLshort -> GLshort -> GLshort -> m ()
glTangent3sEXT = FunPtr (GLshort -> GLshort -> GLshort -> IO ())
-> GLshort -> GLshort -> GLshort -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLshort -> GLshort -> GLshort -> IO ())
-> GLshort -> GLshort -> GLshort -> m ()
ffishortshortshortIOV FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glTangent3sEXTFunPtr

glTangent3sEXTFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glTangent3sEXTFunPtr :: FunPtr (GLshort -> GLshort -> GLshort -> IO ())
glTangent3sEXTFunPtr = IO (FunPtr (GLshort -> GLshort -> GLshort -> IO ()))
-> FunPtr (GLshort -> GLshort -> GLshort -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLshort -> GLshort -> GLshort -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTangent3sEXT")

{-# NOINLINE glTangent3sEXTFunPtr #-}

-- | Usage: @'glTangent3svEXT' v@
--
-- The length of @v@ should be @3@.


glTangent3svEXT :: MonadIO m => Ptr GLshort -> m ()
glTangent3svEXT :: Ptr GLshort -> m ()
glTangent3svEXT = FunPtr (Ptr GLshort -> IO ()) -> Ptr GLshort -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (Ptr GLshort -> IO ()) -> Ptr GLshort -> m ()
ffiPtrshortIOV FunPtr (Ptr GLshort -> IO ())
glTangent3svEXTFunPtr

glTangent3svEXTFunPtr :: FunPtr (Ptr GLshort -> IO ())
glTangent3svEXTFunPtr :: FunPtr (Ptr GLshort -> IO ())
glTangent3svEXTFunPtr = IO (FunPtr (Ptr GLshort -> IO ())) -> FunPtr (Ptr GLshort -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (Ptr GLshort -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTangent3svEXT")

{-# NOINLINE glTangent3svEXTFunPtr #-}

-- | Usage: @'glTangentPointerEXT' type stride pointer@
--
-- The parameter @type@ is a @TangentPointerTypeEXT@.
--
-- The length of @pointer@ should be @COMPSIZE(type,stride)@.


glTangentPointerEXT :: MonadIO m => GLenum -> GLsizei -> Ptr () -> m ()
glTangentPointerEXT :: GLenum -> GLint -> Ptr () -> m ()
glTangentPointerEXT = FunPtr (GLenum -> GLint -> Ptr () -> IO ())
-> GLenum -> GLint -> Ptr () -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLenum -> GLint -> Ptr () -> IO ())
-> GLenum -> GLint -> Ptr () -> m ()
ffienumsizeiPtrVIOV FunPtr (GLenum -> GLint -> Ptr () -> IO ())
glTangentPointerEXTFunPtr

glTangentPointerEXTFunPtr :: FunPtr (GLenum -> GLsizei -> Ptr () -> IO ())
glTangentPointerEXTFunPtr :: FunPtr (GLenum -> GLint -> Ptr () -> IO ())
glTangentPointerEXTFunPtr = IO (FunPtr (GLenum -> GLint -> Ptr () -> IO ()))
-> FunPtr (GLenum -> GLint -> Ptr () -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLenum -> GLint -> Ptr () -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glTangentPointerEXT")

{-# NOINLINE glTangentPointerEXTFunPtr #-}

pattern $bGL_BINORMAL_ARRAY_EXT :: a
$mGL_BINORMAL_ARRAY_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_BINORMAL_ARRAY_EXT = 0x843A

pattern $bGL_BINORMAL_ARRAY_POINTER_EXT :: a
$mGL_BINORMAL_ARRAY_POINTER_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_BINORMAL_ARRAY_POINTER_EXT = 0x8443

pattern $bGL_BINORMAL_ARRAY_STRIDE_EXT :: a
$mGL_BINORMAL_ARRAY_STRIDE_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_BINORMAL_ARRAY_STRIDE_EXT = 0x8441

pattern $bGL_BINORMAL_ARRAY_TYPE_EXT :: a
$mGL_BINORMAL_ARRAY_TYPE_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_BINORMAL_ARRAY_TYPE_EXT = 0x8440

pattern $bGL_CURRENT_BINORMAL_EXT :: a
$mGL_CURRENT_BINORMAL_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_CURRENT_BINORMAL_EXT = 0x843C

pattern $bGL_CURRENT_TANGENT_EXT :: a
$mGL_CURRENT_TANGENT_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_CURRENT_TANGENT_EXT = 0x843B

pattern $bGL_MAP1_BINORMAL_EXT :: a
$mGL_MAP1_BINORMAL_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAP1_BINORMAL_EXT = 0x8446

pattern $bGL_MAP1_TANGENT_EXT :: a
$mGL_MAP1_TANGENT_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAP1_TANGENT_EXT = 0x8444

pattern $bGL_MAP2_BINORMAL_EXT :: a
$mGL_MAP2_BINORMAL_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAP2_BINORMAL_EXT = 0x8447

pattern $bGL_MAP2_TANGENT_EXT :: a
$mGL_MAP2_TANGENT_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAP2_TANGENT_EXT = 0x8445

pattern $bGL_TANGENT_ARRAY_EXT :: a
$mGL_TANGENT_ARRAY_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TANGENT_ARRAY_EXT = 0x8439

pattern $bGL_TANGENT_ARRAY_POINTER_EXT :: a
$mGL_TANGENT_ARRAY_POINTER_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TANGENT_ARRAY_POINTER_EXT = 0x8442

pattern $bGL_TANGENT_ARRAY_STRIDE_EXT :: a
$mGL_TANGENT_ARRAY_STRIDE_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TANGENT_ARRAY_STRIDE_EXT = 0x843F

pattern $bGL_TANGENT_ARRAY_TYPE_EXT :: a
$mGL_TANGENT_ARRAY_TYPE_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TANGENT_ARRAY_TYPE_EXT = 0x843E