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

  -- * GL_ARB_occlusion_query
  , glBeginQueryARB
  , glDeleteQueriesARB
  , glEndQueryARB
  , glGenQueriesARB
  , glGetQueryObjectivARB
  , glGetQueryObjectuivARB
  , glGetQueryivARB
  , glIsQueryARB
  , pattern GL_CURRENT_QUERY_ARB
  , pattern GL_QUERY_COUNTER_BITS_ARB
  , pattern GL_QUERY_RESULT_ARB
  , pattern GL_QUERY_RESULT_AVAILABLE_ARB
  , pattern GL_SAMPLES_PASSED_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_occlusion_query :: Bool
gl_ARB_occlusion_query = member "GL_ARB_occlusion_query" extensions

glBeginQueryARB :: MonadIO m => GLenum -> GLuint -> m ()
glBeginQueryARB = ffienumuintIOV glBeginQueryARBFunPtr

glBeginQueryARBFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glBeginQueryARBFunPtr = unsafePerformIO (getProcAddress "glBeginQueryARB")

{-# NOINLINE glBeginQueryARBFunPtr #-}

glDeleteQueriesARB :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteQueriesARB = ffisizeiPtruintIOV glDeleteQueriesARBFunPtr

glDeleteQueriesARBFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteQueriesARBFunPtr = unsafePerformIO (getProcAddress "glDeleteQueriesARB")

{-# NOINLINE glDeleteQueriesARBFunPtr #-}

glEndQueryARB :: MonadIO m => GLenum -> m ()
glEndQueryARB = ffienumIOV glEndQueryARBFunPtr

glEndQueryARBFunPtr :: FunPtr (GLenum -> IO ())
glEndQueryARBFunPtr = unsafePerformIO (getProcAddress "glEndQueryARB")

{-# NOINLINE glEndQueryARBFunPtr #-}

glGenQueriesARB :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenQueriesARB = ffisizeiPtruintIOV glGenQueriesARBFunPtr

glGenQueriesARBFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenQueriesARBFunPtr = unsafePerformIO (getProcAddress "glGenQueriesARB")

{-# NOINLINE glGenQueriesARBFunPtr #-}

glGetQueryObjectivARB :: MonadIO m => GLuint -> GLenum -> Ptr GLint -> m ()
glGetQueryObjectivARB = ffiuintenumPtrintIOV glGetQueryObjectivARBFunPtr

glGetQueryObjectivARBFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLint -> IO ())
glGetQueryObjectivARBFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectivARB")

{-# NOINLINE glGetQueryObjectivARBFunPtr #-}

glGetQueryObjectuivARB :: MonadIO m => GLuint -> GLenum -> Ptr GLuint -> m ()
glGetQueryObjectuivARB = ffiuintenumPtruintIOV glGetQueryObjectuivARBFunPtr

glGetQueryObjectuivARBFunPtr :: FunPtr (GLuint -> GLenum -> Ptr GLuint -> IO ())
glGetQueryObjectuivARBFunPtr = unsafePerformIO (getProcAddress "glGetQueryObjectuivARB")

{-# NOINLINE glGetQueryObjectuivARBFunPtr #-}

glGetQueryivARB :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetQueryivARB = ffienumenumPtrintIOV glGetQueryivARBFunPtr

glGetQueryivARBFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetQueryivARBFunPtr = unsafePerformIO (getProcAddress "glGetQueryivARB")

{-# NOINLINE glGetQueryivARBFunPtr #-}

glIsQueryARB :: MonadIO m => GLuint -> m GLboolean
glIsQueryARB = ffiuintIOboolean glIsQueryARBFunPtr

glIsQueryARBFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsQueryARBFunPtr = unsafePerformIO (getProcAddress "glIsQueryARB")

{-# NOINLINE glIsQueryARBFunPtr #-}

pattern GL_CURRENT_QUERY_ARB = 0x8865 :: GLenum

pattern GL_QUERY_COUNTER_BITS_ARB = 0x8864 :: GLenum

pattern GL_QUERY_RESULT_ARB = 0x8866 :: GLenum

pattern GL_QUERY_RESULT_AVAILABLE_ARB = 0x8867 :: GLenum

pattern GL_SAMPLES_PASSED_ARB = 0x8914 :: GLenum