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

  -- * GL_EXT_vertex_attrib_64bit
  , glGetVertexAttribLdvEXT
  , glVertexAttribL1dEXT
  , glVertexAttribL1dvEXT
  , glVertexAttribL2dEXT
  , glVertexAttribL2dvEXT
  , glVertexAttribL3dEXT
  , glVertexAttribL3dvEXT
  , glVertexAttribL4dEXT
  , glVertexAttribL4dvEXT
  , glVertexAttribLPointerEXT
  , pattern GL_DOUBLE
  , pattern GL_DOUBLE_MAT2_EXT
  , pattern GL_DOUBLE_MAT2x3_EXT
  , pattern GL_DOUBLE_MAT2x4_EXT
  , pattern GL_DOUBLE_MAT3_EXT
  , pattern GL_DOUBLE_MAT3x2_EXT
  , pattern GL_DOUBLE_MAT3x4_EXT
  , pattern GL_DOUBLE_MAT4_EXT
  , pattern GL_DOUBLE_MAT4x2_EXT
  , pattern GL_DOUBLE_MAT4x3_EXT
  , pattern GL_DOUBLE_VEC2_EXT
  , pattern GL_DOUBLE_VEC3_EXT
  , pattern GL_DOUBLE_VEC4_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.Internal.Shared
import Graphics.GL.Types
import System.IO.Unsafe

-- | Checks that the <https://cvs.khronos.org/svn/repos/ogl/trunk/doc/registry/public/specs/EXT/vertex_attrib_64bit.txt GL_EXT_vertex_attrib_64bit> extension is available.

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

-- | Usage: @'glGetVertexAttribLdvEXT' index pname params@
--
-- The length of @params@ should be @COMPSIZE(pname)@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glGetVertexAttribLdv'.


glGetVertexAttribLdvEXT :: MonadIO m => GLuint -> GLenum -> Ptr GLdouble -> m ()
glGetVertexAttribLdvEXT :: GLuint -> GLuint -> Ptr GLdouble -> m ()
glGetVertexAttribLdvEXT = FunPtr (GLuint -> GLuint -> Ptr GLdouble -> IO ())
-> GLuint -> GLuint -> Ptr GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> Ptr GLdouble -> IO ())
-> GLuint -> GLuint -> Ptr GLdouble -> m ()
ffiuintenumPtrdoubleIOV FunPtr (GLuint -> GLuint -> Ptr GLdouble -> IO ())
glGetVertexAttribLdvEXTFunPtr

glGetVertexAttribLdvEXTFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLdouble -> IO ())
glGetVertexAttribLdvEXTFunPtr :: FunPtr (GLuint -> GLuint -> Ptr GLdouble -> IO ())
glGetVertexAttribLdvEXTFunPtr = IO (FunPtr (GLuint -> GLuint -> Ptr GLdouble -> IO ()))
-> FunPtr (GLuint -> GLuint -> Ptr GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLuint -> Ptr GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetVertexAttribLdvEXT")

{-# NOINLINE glGetVertexAttribLdvEXTFunPtr #-}

-- | Usage: @'glVertexAttribL1dEXT' index x@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttribL1d'.


glVertexAttribL1dEXT :: MonadIO m => GLuint -> GLdouble -> m ()
glVertexAttribL1dEXT :: GLuint -> GLdouble -> m ()
glVertexAttribL1dEXT = FunPtr (GLuint -> GLdouble -> IO ()) -> GLuint -> GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLdouble -> IO ()) -> GLuint -> GLdouble -> m ()
ffiuintdoubleIOV FunPtr (GLuint -> GLdouble -> IO ())
glVertexAttribL1dEXTFunPtr

glVertexAttribL1dEXTFunPtr :: FunPtr (GLuint -> GLdouble -> IO ())
glVertexAttribL1dEXTFunPtr :: FunPtr (GLuint -> GLdouble -> IO ())
glVertexAttribL1dEXTFunPtr = IO (FunPtr (GLuint -> GLdouble -> IO ()))
-> FunPtr (GLuint -> GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glVertexAttribL1dEXT")

{-# NOINLINE glVertexAttribL1dEXTFunPtr #-}

-- | Usage: @'glVertexAttribL1dvEXT' index v@
--
-- The length of @v@ should be @1@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttribL1dv'.


glVertexAttribL1dvEXT :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttribL1dvEXT :: GLuint -> Ptr GLdouble -> m ()
glVertexAttribL1dvEXT = FunPtr (GLuint -> Ptr GLdouble -> IO ())
-> GLuint -> Ptr GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> Ptr GLdouble -> IO ())
-> GLuint -> Ptr GLdouble -> m ()
ffiuintPtrdoubleIOV FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL1dvEXTFunPtr

glVertexAttribL1dvEXTFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL1dvEXTFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL1dvEXTFunPtr = IO (FunPtr (GLuint -> Ptr GLdouble -> IO ()))
-> FunPtr (GLuint -> Ptr GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> Ptr GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glVertexAttribL1dvEXT")

{-# NOINLINE glVertexAttribL1dvEXTFunPtr #-}

-- | Usage: @'glVertexAttribL2dEXT' index x y@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttribL2d'.


glVertexAttribL2dEXT :: MonadIO m => GLuint -> GLdouble -> GLdouble -> m ()
glVertexAttribL2dEXT :: GLuint -> GLdouble -> GLdouble -> m ()
glVertexAttribL2dEXT = FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
-> GLuint -> GLdouble -> GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
-> GLuint -> GLdouble -> GLdouble -> m ()
ffiuintdoubledoubleIOV FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
glVertexAttribL2dEXTFunPtr

glVertexAttribL2dEXTFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
glVertexAttribL2dEXTFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
glVertexAttribL2dEXTFunPtr = IO (FunPtr (GLuint -> GLdouble -> GLdouble -> IO ()))
-> FunPtr (GLuint -> GLdouble -> GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLdouble -> GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glVertexAttribL2dEXT")

{-# NOINLINE glVertexAttribL2dEXTFunPtr #-}

-- | Usage: @'glVertexAttribL2dvEXT' index v@
--
-- The length of @v@ should be @2@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttribL2dv'.


glVertexAttribL2dvEXT :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttribL2dvEXT :: GLuint -> Ptr GLdouble -> m ()
glVertexAttribL2dvEXT = FunPtr (GLuint -> Ptr GLdouble -> IO ())
-> GLuint -> Ptr GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> Ptr GLdouble -> IO ())
-> GLuint -> Ptr GLdouble -> m ()
ffiuintPtrdoubleIOV FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL2dvEXTFunPtr

glVertexAttribL2dvEXTFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL2dvEXTFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL2dvEXTFunPtr = IO (FunPtr (GLuint -> Ptr GLdouble -> IO ()))
-> FunPtr (GLuint -> Ptr GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> Ptr GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glVertexAttribL2dvEXT")

{-# NOINLINE glVertexAttribL2dvEXTFunPtr #-}

-- | Usage: @'glVertexAttribL3dEXT' index x y z@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttribL3d'.


glVertexAttribL3dEXT :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertexAttribL3dEXT :: GLuint -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertexAttribL3dEXT = FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
-> GLuint -> GLdouble -> GLdouble -> GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
-> GLuint -> GLdouble -> GLdouble -> GLdouble -> m ()
ffiuintdoubledoubledoubleIOV FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttribL3dEXTFunPtr

glVertexAttribL3dEXTFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttribL3dEXTFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttribL3dEXTFunPtr = IO (FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ()))
-> FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glVertexAttribL3dEXT")

{-# NOINLINE glVertexAttribL3dEXTFunPtr #-}

-- | Usage: @'glVertexAttribL3dvEXT' index v@
--
-- The length of @v@ should be @3@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttribL3dv'.


glVertexAttribL3dvEXT :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttribL3dvEXT :: GLuint -> Ptr GLdouble -> m ()
glVertexAttribL3dvEXT = FunPtr (GLuint -> Ptr GLdouble -> IO ())
-> GLuint -> Ptr GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> Ptr GLdouble -> IO ())
-> GLuint -> Ptr GLdouble -> m ()
ffiuintPtrdoubleIOV FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL3dvEXTFunPtr

glVertexAttribL3dvEXTFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL3dvEXTFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL3dvEXTFunPtr = IO (FunPtr (GLuint -> Ptr GLdouble -> IO ()))
-> FunPtr (GLuint -> Ptr GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> Ptr GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glVertexAttribL3dvEXT")

{-# NOINLINE glVertexAttribL3dvEXTFunPtr #-}

-- | Usage: @'glVertexAttribL4dEXT' index x y z w@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttribL4d'.


glVertexAttribL4dEXT :: MonadIO m => GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertexAttribL4dEXT :: GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
glVertexAttribL4dEXT = FunPtr
  (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
-> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
-> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> m ()
ffiuintdoubledoubledoubledoubleIOV FunPtr
  (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttribL4dEXTFunPtr

glVertexAttribL4dEXTFunPtr :: FunPtr (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttribL4dEXTFunPtr :: FunPtr
  (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
glVertexAttribL4dEXTFunPtr = IO
  (FunPtr
     (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()))
-> FunPtr
     (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glVertexAttribL4dEXT")

{-# NOINLINE glVertexAttribL4dEXTFunPtr #-}

-- | Usage: @'glVertexAttribL4dvEXT' index v@
--
-- The length of @v@ should be @4@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttribL4dv'.


glVertexAttribL4dvEXT :: MonadIO m => GLuint -> Ptr GLdouble -> m ()
glVertexAttribL4dvEXT :: GLuint -> Ptr GLdouble -> m ()
glVertexAttribL4dvEXT = FunPtr (GLuint -> Ptr GLdouble -> IO ())
-> GLuint -> Ptr GLdouble -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> Ptr GLdouble -> IO ())
-> GLuint -> Ptr GLdouble -> m ()
ffiuintPtrdoubleIOV FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL4dvEXTFunPtr

glVertexAttribL4dvEXTFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL4dvEXTFunPtr :: FunPtr (GLuint -> Ptr GLdouble -> IO ())
glVertexAttribL4dvEXTFunPtr = IO (FunPtr (GLuint -> Ptr GLdouble -> IO ()))
-> FunPtr (GLuint -> Ptr GLdouble -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> Ptr GLdouble -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glVertexAttribL4dvEXT")

{-# NOINLINE glVertexAttribL4dvEXTFunPtr #-}

-- | Usage: @'glVertexAttribLPointerEXT' index size type stride pointer@
--
-- The length of @pointer@ should be @size@.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glVertexAttribLPointer'.


glVertexAttribLPointerEXT :: MonadIO m => GLuint -> GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glVertexAttribLPointerEXT :: GLuint -> GLint -> GLuint -> GLint -> Ptr () -> m ()
glVertexAttribLPointerEXT = FunPtr (GLuint -> GLint -> GLuint -> GLint -> Ptr () -> IO ())
-> GLuint -> GLint -> GLuint -> GLint -> Ptr () -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLint -> GLuint -> GLint -> Ptr () -> IO ())
-> GLuint -> GLint -> GLuint -> GLint -> Ptr () -> m ()
ffiuintintenumsizeiPtrVIOV FunPtr (GLuint -> GLint -> GLuint -> GLint -> Ptr () -> IO ())
glVertexAttribLPointerEXTFunPtr

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

{-# NOINLINE glVertexAttribLPointerEXTFunPtr #-}

pattern $bGL_DOUBLE_MAT2_EXT :: a
$mGL_DOUBLE_MAT2_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DOUBLE_MAT2_EXT = 0x8F46

pattern $bGL_DOUBLE_MAT2x3_EXT :: a
$mGL_DOUBLE_MAT2x3_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DOUBLE_MAT2x3_EXT = 0x8F49

pattern $bGL_DOUBLE_MAT2x4_EXT :: a
$mGL_DOUBLE_MAT2x4_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DOUBLE_MAT2x4_EXT = 0x8F4A

pattern $bGL_DOUBLE_MAT3_EXT :: a
$mGL_DOUBLE_MAT3_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DOUBLE_MAT3_EXT = 0x8F47

pattern $bGL_DOUBLE_MAT3x2_EXT :: a
$mGL_DOUBLE_MAT3x2_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DOUBLE_MAT3x2_EXT = 0x8F4B

pattern $bGL_DOUBLE_MAT3x4_EXT :: a
$mGL_DOUBLE_MAT3x4_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DOUBLE_MAT3x4_EXT = 0x8F4C

pattern $bGL_DOUBLE_MAT4_EXT :: a
$mGL_DOUBLE_MAT4_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DOUBLE_MAT4_EXT = 0x8F48

pattern $bGL_DOUBLE_MAT4x2_EXT :: a
$mGL_DOUBLE_MAT4x2_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DOUBLE_MAT4x2_EXT = 0x8F4D

pattern $bGL_DOUBLE_MAT4x3_EXT :: a
$mGL_DOUBLE_MAT4x3_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DOUBLE_MAT4x3_EXT = 0x8F4E

pattern $bGL_DOUBLE_VEC2_EXT :: a
$mGL_DOUBLE_VEC2_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DOUBLE_VEC2_EXT = 0x8FFC

pattern $bGL_DOUBLE_VEC3_EXT :: a
$mGL_DOUBLE_VEC3_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DOUBLE_VEC3_EXT = 0x8FFD

pattern $bGL_DOUBLE_VEC4_EXT :: a
$mGL_DOUBLE_VEC4_EXT :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DOUBLE_VEC4_EXT = 0x8FFE