-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.ARB.ShadingLanguageInclude (
  -- * Extension Support
    gl_ARB_shading_language_include

  -- * GL_ARB_shading_language_include
  , glCompileShaderIncludeARB
  , glDeleteNamedStringARB
  , glGetNamedStringARB
  , glGetNamedStringivARB
  , glIsNamedStringARB
  , glNamedStringARB
  , pattern GL_NAMED_STRING_LENGTH_ARB
  , pattern GL_NAMED_STRING_TYPE_ARB
  , pattern GL_SHADER_INCLUDE_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/shading_language_include.txt GL_ARB_shading_language_include> extension is available.

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

-- | Usage: @'glCompileShaderIncludeARB' shader count path length@
--
-- The length of @path@ should be @count@.
--
-- The length of @length@ should be @count@.


glCompileShaderIncludeARB :: MonadIO m => GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLint -> m ()
glCompileShaderIncludeARB :: GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLsizei -> m ()
glCompileShaderIncludeARB = FunPtr
  (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLsizei -> IO ())
-> GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLsizei -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLsizei -> IO ())
-> GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLsizei -> m ()
ffiuintsizeiPtrPtrcharPtrintIOV FunPtr
  (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLsizei -> IO ())
glCompileShaderIncludeARBFunPtr

glCompileShaderIncludeARBFunPtr :: FunPtr (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLint -> IO ())
glCompileShaderIncludeARBFunPtr :: FunPtr
  (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLsizei -> IO ())
glCompileShaderIncludeARBFunPtr = IO
  (FunPtr
     (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLsizei -> IO ()))
-> FunPtr
     (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLsizei -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint -> GLsizei -> Ptr (Ptr GLchar) -> Ptr GLsizei -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glCompileShaderIncludeARB")

{-# NOINLINE glCompileShaderIncludeARBFunPtr #-}

-- | Usage: @'glDeleteNamedStringARB' namelen name@
--
-- The length of @name@ should be @namelen@.


glDeleteNamedStringARB :: MonadIO m => GLint -> Ptr GLchar -> m ()
glDeleteNamedStringARB :: GLsizei -> Ptr GLchar -> m ()
glDeleteNamedStringARB = FunPtr (GLsizei -> Ptr GLchar -> IO ())
-> GLsizei -> Ptr GLchar -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsizei -> Ptr GLchar -> IO ())
-> GLsizei -> Ptr GLchar -> m ()
ffiintPtrcharIOV FunPtr (GLsizei -> Ptr GLchar -> IO ())
glDeleteNamedStringARBFunPtr

glDeleteNamedStringARBFunPtr :: FunPtr (GLint -> Ptr GLchar -> IO ())
glDeleteNamedStringARBFunPtr :: FunPtr (GLsizei -> Ptr GLchar -> IO ())
glDeleteNamedStringARBFunPtr = IO (FunPtr (GLsizei -> Ptr GLchar -> IO ()))
-> FunPtr (GLsizei -> Ptr GLchar -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLsizei -> Ptr GLchar -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glDeleteNamedStringARB")

{-# NOINLINE glDeleteNamedStringARBFunPtr #-}

-- | Usage: @'glGetNamedStringARB' namelen name bufSize stringlen string@
--
-- The length of @name@ should be @namelen@.
--
-- The length of @stringlen@ should be @1@.
--
-- The length of @string@ should be @bufSize@.


glGetNamedStringARB :: MonadIO m => GLint -> Ptr GLchar -> GLsizei -> Ptr GLint -> Ptr GLchar -> m ()
glGetNamedStringARB :: GLsizei
-> Ptr GLchar -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> m ()
glGetNamedStringARB = FunPtr
  (GLsizei
   -> Ptr GLchar -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
-> GLsizei
-> Ptr GLchar
-> GLsizei
-> Ptr GLsizei
-> Ptr GLchar
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLsizei
   -> Ptr GLchar -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
-> GLsizei
-> Ptr GLchar
-> GLsizei
-> Ptr GLsizei
-> Ptr GLchar
-> m ()
ffiintPtrcharsizeiPtrintPtrcharIOV FunPtr
  (GLsizei
   -> Ptr GLchar -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetNamedStringARBFunPtr

glGetNamedStringARBFunPtr :: FunPtr (GLint -> Ptr GLchar -> GLsizei -> Ptr GLint -> Ptr GLchar -> IO ())
glGetNamedStringARBFunPtr :: FunPtr
  (GLsizei
   -> Ptr GLchar -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
glGetNamedStringARBFunPtr = IO
  (FunPtr
     (GLsizei
      -> Ptr GLchar -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()))
-> FunPtr
     (GLsizei
      -> Ptr GLchar -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLsizei
         -> Ptr GLchar -> GLsizei -> Ptr GLsizei -> Ptr GLchar -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glGetNamedStringARB")

{-# NOINLINE glGetNamedStringARBFunPtr #-}

-- | Usage: @'glGetNamedStringivARB' namelen name pname params@
--
-- The length of @name@ should be @namelen@.
--
-- The length of @params@ should be @COMPSIZE(pname)@.


glGetNamedStringivARB :: MonadIO m => GLint -> Ptr GLchar -> GLenum -> Ptr GLint -> m ()
glGetNamedStringivARB :: GLsizei -> Ptr GLchar -> GLuint -> Ptr GLsizei -> m ()
glGetNamedStringivARB = FunPtr (GLsizei -> Ptr GLchar -> GLuint -> Ptr GLsizei -> IO ())
-> GLsizei -> Ptr GLchar -> GLuint -> Ptr GLsizei -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsizei -> Ptr GLchar -> GLuint -> Ptr GLsizei -> IO ())
-> GLsizei -> Ptr GLchar -> GLuint -> Ptr GLsizei -> m ()
ffiintPtrcharenumPtrintIOV FunPtr (GLsizei -> Ptr GLchar -> GLuint -> Ptr GLsizei -> IO ())
glGetNamedStringivARBFunPtr

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

{-# NOINLINE glGetNamedStringivARBFunPtr #-}

-- | Usage: @'glIsNamedStringARB' namelen name@
--
-- The length of @name@ should be @namelen@.


glIsNamedStringARB :: MonadIO m => GLint -> Ptr GLchar -> m GLboolean
glIsNamedStringARB :: GLsizei -> Ptr GLchar -> m GLboolean
glIsNamedStringARB = FunPtr (GLsizei -> Ptr GLchar -> IO GLboolean)
-> GLsizei -> Ptr GLchar -> m GLboolean
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLsizei -> Ptr GLchar -> IO GLboolean)
-> GLsizei -> Ptr GLchar -> m GLboolean
ffiintPtrcharIOboolean FunPtr (GLsizei -> Ptr GLchar -> IO GLboolean)
glIsNamedStringARBFunPtr

glIsNamedStringARBFunPtr :: FunPtr (GLint -> Ptr GLchar -> IO GLboolean)
glIsNamedStringARBFunPtr :: FunPtr (GLsizei -> Ptr GLchar -> IO GLboolean)
glIsNamedStringARBFunPtr = IO (FunPtr (GLsizei -> Ptr GLchar -> IO GLboolean))
-> FunPtr (GLsizei -> Ptr GLchar -> IO GLboolean)
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLsizei -> Ptr GLchar -> IO GLboolean))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glIsNamedStringARB")

{-# NOINLINE glIsNamedStringARBFunPtr #-}

-- | Usage: @'glNamedStringARB' type namelen name stringlen string@
--
-- The length of @name@ should be @namelen@.
--
-- The length of @string@ should be @stringlen@.


glNamedStringARB :: MonadIO m => GLenum -> GLint -> Ptr GLchar -> GLint -> Ptr GLchar -> m ()
glNamedStringARB :: GLuint -> GLsizei -> Ptr GLchar -> GLsizei -> Ptr GLchar -> m ()
glNamedStringARB = FunPtr
  (GLuint -> GLsizei -> Ptr GLchar -> GLsizei -> Ptr GLchar -> IO ())
-> GLuint -> GLsizei -> Ptr GLchar -> GLsizei -> Ptr GLchar -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint -> GLsizei -> Ptr GLchar -> GLsizei -> Ptr GLchar -> IO ())
-> GLuint -> GLsizei -> Ptr GLchar -> GLsizei -> Ptr GLchar -> m ()
ffienumintPtrcharintPtrcharIOV FunPtr
  (GLuint -> GLsizei -> Ptr GLchar -> GLsizei -> Ptr GLchar -> IO ())
glNamedStringARBFunPtr

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

{-# NOINLINE glNamedStringARBFunPtr #-}

pattern $bGL_NAMED_STRING_LENGTH_ARB :: a
$mGL_NAMED_STRING_LENGTH_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_NAMED_STRING_LENGTH_ARB = 0x8DE9

pattern $bGL_NAMED_STRING_TYPE_ARB :: a
$mGL_NAMED_STRING_TYPE_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_NAMED_STRING_TYPE_ARB = 0x8DEA

pattern $bGL_SHADER_INCLUDE_ARB :: a
$mGL_SHADER_INCLUDE_ARB :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_SHADER_INCLUDE_ARB = 0x8DAE