-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.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.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/transpose_matrix.txt GL_ARB_transpose_matrix> extension is available.

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

-- | Usage: @'glLoadTransposeMatrixdARB' m@
--
-- The length of @m@ should be @16@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glLoadTransposeMatrixd'.


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

glLoadTransposeMatrixdARBFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glLoadTransposeMatrixdARBFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glLoadTransposeMatrixdARBFunPtr = 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 "glLoadTransposeMatrixdARB")

{-# NOINLINE glLoadTransposeMatrixdARBFunPtr #-}

-- | Usage: @'glLoadTransposeMatrixfARB' m@
--
-- The length of @m@ should be @16@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glLoadTransposeMatrixf'.


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

glLoadTransposeMatrixfARBFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glLoadTransposeMatrixfARBFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glLoadTransposeMatrixfARBFunPtr = 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 "glLoadTransposeMatrixfARB")

{-# NOINLINE glLoadTransposeMatrixfARBFunPtr #-}

-- | Usage: @'glMultTransposeMatrixdARB' m@
--
-- The length of @m@ should be @16@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glMultTransposeMatrixd'.


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

glMultTransposeMatrixdARBFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glMultTransposeMatrixdARBFunPtr :: FunPtr (Ptr GLdouble -> IO ())
glMultTransposeMatrixdARBFunPtr = 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 "glMultTransposeMatrixdARB")

{-# NOINLINE glMultTransposeMatrixdARBFunPtr #-}

-- | Usage: @'glMultTransposeMatrixfARB' m@
--
-- The length of @m@ should be @16@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glMultTransposeMatrixf'.


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

glMultTransposeMatrixfARBFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glMultTransposeMatrixfARBFunPtr :: FunPtr (Ptr GLfloat -> IO ())
glMultTransposeMatrixfARBFunPtr = 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 "glMultTransposeMatrixfARB")

{-# NOINLINE glMultTransposeMatrixfARBFunPtr #-}

pattern $bGL_TRANSPOSE_COLOR_MATRIX_ARB :: a
$mGL_TRANSPOSE_COLOR_MATRIX_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TRANSPOSE_COLOR_MATRIX_ARB = 0x84E6

pattern $bGL_TRANSPOSE_MODELVIEW_MATRIX_ARB :: a
$mGL_TRANSPOSE_MODELVIEW_MATRIX_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TRANSPOSE_MODELVIEW_MATRIX_ARB = 0x84E3

pattern $bGL_TRANSPOSE_PROJECTION_MATRIX_ARB :: a
$mGL_TRANSPOSE_PROJECTION_MATRIX_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TRANSPOSE_PROJECTION_MATRIX_ARB = 0x84E4

pattern $bGL_TRANSPOSE_TEXTURE_MATRIX_ARB :: a
$mGL_TRANSPOSE_TEXTURE_MATRIX_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TRANSPOSE_TEXTURE_MATRIX_ARB = 0x84E5