-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.APPLE.VertexArrayObject (
  -- * Extension Support
    gl_APPLE_vertex_array_object

  -- * GL_APPLE_vertex_array_object
  , glBindVertexArrayAPPLE
  , glDeleteVertexArraysAPPLE
  , glGenVertexArraysAPPLE
  , glIsVertexArrayAPPLE
  , pattern GL_VERTEX_ARRAY_BINDING_APPLE
) 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_APPLE_vertex_array_object :: Bool
gl_APPLE_vertex_array_object = member "GL_APPLE_vertex_array_object" extensions

glBindVertexArrayAPPLE :: MonadIO m => GLuint -> m ()
glBindVertexArrayAPPLE = ffiuintIOV glBindVertexArrayAPPLEFunPtr

glBindVertexArrayAPPLEFunPtr :: FunPtr (GLuint -> IO ())
glBindVertexArrayAPPLEFunPtr = unsafePerformIO (getProcAddress "glBindVertexArrayAPPLE")

{-# NOINLINE glBindVertexArrayAPPLEFunPtr #-}

glDeleteVertexArraysAPPLE :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glDeleteVertexArraysAPPLE = ffisizeiPtruintIOV glDeleteVertexArraysAPPLEFunPtr

glDeleteVertexArraysAPPLEFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glDeleteVertexArraysAPPLEFunPtr = unsafePerformIO (getProcAddress "glDeleteVertexArraysAPPLE")

{-# NOINLINE glDeleteVertexArraysAPPLEFunPtr #-}

glGenVertexArraysAPPLE :: MonadIO m => GLsizei -> Ptr GLuint -> m ()
glGenVertexArraysAPPLE = ffisizeiPtruintIOV glGenVertexArraysAPPLEFunPtr

glGenVertexArraysAPPLEFunPtr :: FunPtr (GLsizei -> Ptr GLuint -> IO ())
glGenVertexArraysAPPLEFunPtr = unsafePerformIO (getProcAddress "glGenVertexArraysAPPLE")

{-# NOINLINE glGenVertexArraysAPPLEFunPtr #-}

glIsVertexArrayAPPLE :: MonadIO m => GLuint -> m GLboolean
glIsVertexArrayAPPLE = ffiuintIOboolean glIsVertexArrayAPPLEFunPtr

glIsVertexArrayAPPLEFunPtr :: FunPtr (GLuint -> IO GLboolean)
glIsVertexArrayAPPLEFunPtr = unsafePerformIO (getProcAddress "glIsVertexArrayAPPLE")

{-# NOINLINE glIsVertexArrayAPPLEFunPtr #-}

pattern GL_VERTEX_ARRAY_BINDING_APPLE = 0x85B5 :: GLenum