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

  -- * GL_APPLE_element_array
  , glDrawElementArrayAPPLE
  , glDrawRangeElementArrayAPPLE
  , glElementPointerAPPLE
  , glMultiDrawElementArrayAPPLE
  , glMultiDrawRangeElementArrayAPPLE
  , pattern GL_ELEMENT_ARRAY_APPLE
  , pattern GL_ELEMENT_ARRAY_POINTER_APPLE
  , pattern GL_ELEMENT_ARRAY_TYPE_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_element_array :: Bool
gl_APPLE_element_array = member "GL_APPLE_element_array" extensions

glDrawElementArrayAPPLE :: MonadIO m => GLenum -> GLint -> GLsizei -> m ()
glDrawElementArrayAPPLE = ffienumintsizeiIOV glDrawElementArrayAPPLEFunPtr

glDrawElementArrayAPPLEFunPtr :: FunPtr (GLenum -> GLint -> GLsizei -> IO ())
glDrawElementArrayAPPLEFunPtr = unsafePerformIO (getProcAddress "glDrawElementArrayAPPLE")

{-# NOINLINE glDrawElementArrayAPPLEFunPtr #-}

glDrawRangeElementArrayAPPLE :: MonadIO m => GLenum -> GLuint -> GLuint -> GLint -> GLsizei -> m ()
glDrawRangeElementArrayAPPLE = ffienumuintuintintsizeiIOV glDrawRangeElementArrayAPPLEFunPtr

glDrawRangeElementArrayAPPLEFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> GLint -> GLsizei -> IO ())
glDrawRangeElementArrayAPPLEFunPtr = unsafePerformIO (getProcAddress "glDrawRangeElementArrayAPPLE")

{-# NOINLINE glDrawRangeElementArrayAPPLEFunPtr #-}

glElementPointerAPPLE :: MonadIO m => GLenum -> Ptr () -> m ()
glElementPointerAPPLE = ffienumPtrVIOV glElementPointerAPPLEFunPtr

glElementPointerAPPLEFunPtr :: FunPtr (GLenum -> Ptr () -> IO ())
glElementPointerAPPLEFunPtr = unsafePerformIO (getProcAddress "glElementPointerAPPLE")

{-# NOINLINE glElementPointerAPPLEFunPtr #-}

glMultiDrawElementArrayAPPLE :: MonadIO m => GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> m ()
glMultiDrawElementArrayAPPLE = ffienumPtrintPtrsizeisizeiIOV glMultiDrawElementArrayAPPLEFunPtr

glMultiDrawElementArrayAPPLEFunPtr :: FunPtr (GLenum -> Ptr GLint -> Ptr GLsizei -> GLsizei -> IO ())
glMultiDrawElementArrayAPPLEFunPtr = unsafePerformIO (getProcAddress "glMultiDrawElementArrayAPPLE")

{-# NOINLINE glMultiDrawElementArrayAPPLEFunPtr #-}

glMultiDrawRangeElementArrayAPPLE :: MonadIO m => GLenum -> GLuint -> GLuint -> Ptr GLint -> Ptr GLsizei -> GLsizei -> m ()
glMultiDrawRangeElementArrayAPPLE = ffienumuintuintPtrintPtrsizeisizeiIOV glMultiDrawRangeElementArrayAPPLEFunPtr

glMultiDrawRangeElementArrayAPPLEFunPtr :: FunPtr (GLenum -> GLuint -> GLuint -> Ptr GLint -> Ptr GLsizei -> GLsizei -> IO ())
glMultiDrawRangeElementArrayAPPLEFunPtr = unsafePerformIO (getProcAddress "glMultiDrawRangeElementArrayAPPLE")

{-# NOINLINE glMultiDrawRangeElementArrayAPPLEFunPtr #-}

pattern GL_ELEMENT_ARRAY_APPLE = 0x8A0C :: GLenum

pattern GL_ELEMENT_ARRAY_POINTER_APPLE = 0x8A0E :: GLenum

pattern GL_ELEMENT_ARRAY_TYPE_APPLE = 0x8A0D :: GLenum