module Graphics.GL.Types (
  
  GLboolean,
  GLbyte,
  GLubyte,
  GLchar,
  GLshort,
  GLushort,
  GLint,
  GLuint,
  GLfixed,
  GLint64,
  GLuint64,
  GLsizei,
  GLenum,
  GLintptr,
  GLsizeiptr,
  GLsync,
  GLbitfield,
  GLhalf,
  GLfloat,
  GLclampf,
  GLdouble,
  GLclampd,
  GLDEBUGPROC, GLDEBUGPROCFunc, makeGLDEBUGPROC,
  GLvoid,
  
  GLcharARB,
  GLint64EXT,
  GLuint64EXT,
  GLintptrARB,
  GLsizeiptrARB,
  GLhalfARB,
  GLhalfNV,
  GLDEBUGPROCAMD, GLDEBUGPROCAMDFunc, makeGLDEBUGPROCAMD,
  GLDEBUGPROCARB, GLDEBUGPROCARBFunc, makeGLDEBUGPROCARB,
  GLDEBUGPROCKHR, GLDEBUGPROCKHRFunc, makeGLDEBUGPROCKHR,
  
  GLclampx,
  GLhandleARB,
  GLvdpauSurfaceNV,
  GLeglImageOES,
  
  mkGLDEBUGPROC,
  mkGLDEBUGPROCAMD,
  mkGLDEBUGPROCARB,
  mkGLDEBUGPROCKHR
) where
import Data.Int
import Data.Word
import Foreign.C.Types
import Foreign.Ptr
import Numeric.Fixed
import Numeric.Half
type GLboolean = Word8
type GLbyte = Int8
type GLubyte = Word8
type GLchar = CChar
type GLshort = Int16
type GLushort = Word16
type GLint = Int32
type GLuint = Word32
type GLfixed = Fixed
type GLint64 = Int64
type GLuint64 = Word64
type GLsizei = Int32
type GLenum = Word32
type GLintptr = CPtrdiff
type GLsizeiptr = CPtrdiff
type GLsync = Ptr ()
type GLbitfield = Word32
type GLhalf = Half
type GLfloat = Float
type GLclampf = Float
type GLdouble = Double
type GLclampd = Double
type GLDEBUGPROC = FunPtr GLDEBUGPROCFunc
type GLDEBUGPROCFunc
  =  GLenum 
  -> GLenum 
  -> GLuint 
  -> GLenum 
  -> GLsizei 
  -> Ptr GLchar 
  -> Ptr () 
  -> IO ()
foreign import CALLCONV "wrapper"
   makeGLDEBUGPROC :: GLDEBUGPROCFunc -> IO (FunPtr GLDEBUGPROCFunc)
type GLvoid = ()
type GLcharARB = CChar
type GLint64EXT = Int64
type GLuint64EXT = Word64
type GLintptrARB = CPtrdiff
type GLsizeiptrARB = CPtrdiff
type GLhalfARB = Half
type GLhalfNV = Half
type GLDEBUGPROCAMD = FunPtr GLDEBUGPROCAMDFunc
type GLDEBUGPROCAMDFunc
  =  GLuint 
  -> GLenum 
  -> GLenum 
  -> GLsizei 
  -> Ptr GLchar 
  -> Ptr () 
  -> IO ()
foreign import CALLCONV "wrapper"
  makeGLDEBUGPROCAMD :: GLDEBUGPROCAMDFunc -> IO (FunPtr GLDEBUGPROCAMDFunc)
type GLDEBUGPROCARB = GLDEBUGPROC
type GLDEBUGPROCARBFunc = GLDEBUGPROCFunc
makeGLDEBUGPROCARB :: GLDEBUGPROCARBFunc -> IO (FunPtr GLDEBUGPROCARBFunc)
makeGLDEBUGPROCARB = makeGLDEBUGPROC
type GLDEBUGPROCKHR = GLDEBUGPROC
type GLDEBUGPROCKHRFunc = GLDEBUGPROCFunc
makeGLDEBUGPROCKHR :: GLDEBUGPROCKHRFunc -> IO (FunPtr GLDEBUGPROCKHRFunc)
makeGLDEBUGPROCKHR = makeGLDEBUGPROC
type GLclampx = Fixed
#if HANDLE_IS_POINTER
type GLhandleARB = Ptr ()
#else
type GLhandleARB = Word32
#endif
type GLvdpauSurfaceNV = GLintptr
type GLeglImageOES = Ptr ()
mkGLDEBUGPROC :: GLDEBUGPROCFunc -> IO (FunPtr GLDEBUGPROCFunc)
mkGLDEBUGPROC = makeGLDEBUGPROC
mkGLDEBUGPROCAMD :: GLDEBUGPROCAMDFunc -> IO (FunPtr GLDEBUGPROCAMDFunc)
mkGLDEBUGPROCAMD = makeGLDEBUGPROCAMD
mkGLDEBUGPROCARB :: GLDEBUGPROCARBFunc -> IO (FunPtr GLDEBUGPROCARBFunc)
mkGLDEBUGPROCARB = makeGLDEBUGPROCARB
mkGLDEBUGPROCKHR :: GLDEBUGPROCKHRFunc -> IO (FunPtr GLDEBUGPROCKHRFunc)
mkGLDEBUGPROCKHR = makeGLDEBUGPROCKHR