-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.OES.Mapbuffer (
  -- * Extension Support
    gl_OES_mapbuffer

  -- * GL_OES_mapbuffer
  , glGetBufferPointervOES
  , glMapBufferOES
  , glUnmapBufferOES
  , pattern GL_BUFFER_ACCESS_OES
  , pattern GL_BUFFER_MAPPED_OES
  , pattern GL_BUFFER_MAP_POINTER_OES
  , pattern GL_WRITE_ONLY_OES
) 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_OES_mapbuffer :: Bool
gl_OES_mapbuffer = member "GL_OES_mapbuffer" extensions

glGetBufferPointervOES :: MonadIO m => GLenum -> GLenum -> Ptr () -> m ()
glGetBufferPointervOES = ffienumenumPtrVIOV glGetBufferPointervOESFunPtr

glGetBufferPointervOESFunPtr :: FunPtr (GLenum -> GLenum -> Ptr () -> IO ())
glGetBufferPointervOESFunPtr = unsafePerformIO (getProcAddress "glGetBufferPointervOES")

{-# NOINLINE glGetBufferPointervOESFunPtr #-}

glMapBufferOES :: MonadIO m => GLenum -> GLenum -> m (Ptr ())
glMapBufferOES = ffienumenumIOPtrV glMapBufferOESFunPtr

glMapBufferOESFunPtr :: FunPtr (GLenum -> GLenum -> IO (Ptr ()))
glMapBufferOESFunPtr = unsafePerformIO (getProcAddress "glMapBufferOES")

{-# NOINLINE glMapBufferOESFunPtr #-}

glUnmapBufferOES :: MonadIO m => GLenum -> m GLboolean
glUnmapBufferOES = ffienumIOboolean glUnmapBufferOESFunPtr

glUnmapBufferOESFunPtr :: FunPtr (GLenum -> IO GLboolean)
glUnmapBufferOESFunPtr = unsafePerformIO (getProcAddress "glUnmapBufferOES")

{-# NOINLINE glUnmapBufferOESFunPtr #-}

pattern GL_BUFFER_ACCESS_OES = 0x88BB

pattern GL_BUFFER_MAPPED_OES = 0x88BC

pattern GL_BUFFER_MAP_POINTER_OES = 0x88BD

pattern GL_WRITE_ONLY_OES = 0x88B9