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

  -- * GL_ARB_transpose_matrix
  , glLoadTransposeMatrixdARB
  , glLoadTransposeMatrixfARB
  , glMultTransposeMatrixdARB
  , glMultTransposeMatrixfARB
  , pattern GL_TRANSPOSE_COLOR_MATRIX_ARB
  , pattern GL_TRANSPOSE_MODELVIEW_MATRIX_ARB
  , pattern GL_TRANSPOSE_PROJECTION_MATRIX_ARB
  , pattern GL_TRANSPOSE_TEXTURE_MATRIX_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.Types
import System.IO.Unsafe

gl_ARB_transpose_matrix :: Bool
gl_ARB_transpose_matrix = member "GL_ARB_transpose_matrix" extensions

glLoadTransposeMatrixdARB :: MonadIO m => Ptr GLdouble -> m ()
glLoadTransposeMatrixdARB = ffiPtrdoubleIOV glLoadTransposeMatrixdARBFunPtr

glLoadTransposeMatrixdARBFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glLoadTransposeMatrixdARBFunPtr = unsafePerformIO (getProcAddress "glLoadTransposeMatrixdARB")

{-# NOINLINE glLoadTransposeMatrixdARBFunPtr #-}

glLoadTransposeMatrixfARB :: MonadIO m => Ptr GLfloat -> m ()
glLoadTransposeMatrixfARB = ffiPtrfloatIOV glLoadTransposeMatrixfARBFunPtr

glLoadTransposeMatrixfARBFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glLoadTransposeMatrixfARBFunPtr = unsafePerformIO (getProcAddress "glLoadTransposeMatrixfARB")

{-# NOINLINE glLoadTransposeMatrixfARBFunPtr #-}

glMultTransposeMatrixdARB :: MonadIO m => Ptr GLdouble -> m ()
glMultTransposeMatrixdARB = ffiPtrdoubleIOV glMultTransposeMatrixdARBFunPtr

glMultTransposeMatrixdARBFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glMultTransposeMatrixdARBFunPtr = unsafePerformIO (getProcAddress "glMultTransposeMatrixdARB")

{-# NOINLINE glMultTransposeMatrixdARBFunPtr #-}

glMultTransposeMatrixfARB :: MonadIO m => Ptr GLfloat -> m ()
glMultTransposeMatrixfARB = ffiPtrfloatIOV glMultTransposeMatrixfARBFunPtr

glMultTransposeMatrixfARBFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glMultTransposeMatrixfARBFunPtr = unsafePerformIO (getProcAddress "glMultTransposeMatrixfARB")

{-# NOINLINE glMultTransposeMatrixfARBFunPtr #-}

pattern GL_TRANSPOSE_COLOR_MATRIX_ARB = 0x84E6

pattern GL_TRANSPOSE_MODELVIEW_MATRIX_ARB = 0x84E3

pattern GL_TRANSPOSE_PROJECTION_MATRIX_ARB = 0x84E4

pattern GL_TRANSPOSE_TEXTURE_MATRIX_ARB = 0x84E5