{-# LANGUAGE ForeignFunctionInterface, CPP #-}
--------------------------------------------------------------------------------
-- |
-- Module      :  Graphics.Rendering.OpenGL.Raw.ARB.VertexProgram
-- Copyright   :  (c) Sven Panne 2009
-- License     :  BSD-style (see the file LICENSE)
--
-- Maintainer  :  sven.panne@aedion.de
-- Stability   :  stable
-- Portability :  portable
--
-- All raw functions and tokens from the ARB_vertex_program extension not
-- already in the OpenGL 3.1 core, see
-- <http://www.opengl.org/registry/specs/ARB/vertex_program.txt>.
--
--------------------------------------------------------------------------------

module Graphics.Rendering.OpenGL.Raw.ARB.VertexProgram (
   -- * Functions
   glProgramString,
   glBindProgram,
   glDeletePrograms,
   glGenPrograms,
   glProgramEnvParameter4d,
   glProgramEnvParameter4dv,
   glProgramEnvParameter4f,
   glProgramEnvParameter4fv,
   glProgramLocalParameter4d,
   glProgramLocalParameter4dv,
   glProgramLocalParameter4f,
   glProgramLocalParameter4fv,
   glGetProgramEnvParameterdv,
   glGetProgramEnvParameterfv,
   glGetProgramLocalParameterdv,
   glGetProgramLocalParameterfv,
   glGetProgramString,
   -- * Tokens
   gl_VERTEX_PROGRAM,
   gl_PROGRAM_FORMAT_ASCII,
   gl_PROGRAM_LENGTH,
   gl_PROGRAM_FORMAT,
   gl_PROGRAM_BINDING,
   gl_PROGRAM_INSTRUCTIONS,
   gl_MAX_PROGRAM_INSTRUCTIONS,
   gl_PROGRAM_NATIVE_INSTRUCTIONS,
   gl_MAX_PROGRAM_NATIVE_INSTRUCTIONS,
   gl_PROGRAM_TEMPORARIES,
   gl_MAX_PROGRAM_TEMPORARIES,
   gl_PROGRAM_NATIVE_TEMPORARIES,
   gl_MAX_PROGRAM_NATIVE_TEMPORARIES,
   gl_PROGRAM_PARAMETERS,
   gl_MAX_PROGRAM_PARAMETERS,
   gl_PROGRAM_NATIVE_PARAMETERS,
   gl_MAX_PROGRAM_NATIVE_PARAMETERS,
   gl_PROGRAM_ATTRIBS,
   gl_MAX_PROGRAM_ATTRIBS,
   gl_PROGRAM_NATIVE_ATTRIBS,
   gl_MAX_PROGRAM_NATIVE_ATTRIBS,
   gl_PROGRAM_ADDRESS_REGISTERS,
   gl_MAX_PROGRAM_ADDRESS_REGISTERS,
   gl_PROGRAM_NATIVE_ADDRESS_REGISTERS,
   gl_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS,
   gl_MAX_PROGRAM_LOCAL_PARAMETERS,
   gl_MAX_PROGRAM_ENV_PARAMETERS,
   gl_PROGRAM_UNDER_NATIVE_LIMITS,
   gl_PROGRAM_STRING,
   gl_PROGRAM_ERROR_POSITION,
   gl_CURRENT_MATRIX,
   gl_TRANSPOSE_CURRENT_MATRIX,
   gl_CURRENT_MATRIX_STACK_DEPTH,
   gl_MAX_PROGRAM_MATRICES,
   gl_MAX_PROGRAM_MATRIX_STACK_DEPTH,
   gl_PROGRAM_ERROR_STRING,
   gl_MATRIX0,
   gl_MATRIX1,
   gl_MATRIX2,
   gl_MATRIX3,
   gl_MATRIX4,
   gl_MATRIX5,
   gl_MATRIX6,
   gl_MATRIX7,
   gl_MATRIX8,
   gl_MATRIX9,
   gl_MATRIX10,
   gl_MATRIX11,
   gl_MATRIX12,
   gl_MATRIX13,
   gl_MATRIX14,
   gl_MATRIX15,
   gl_MATRIX16,
   gl_MATRIX17,
   gl_MATRIX18,
   gl_MATRIX19,
   gl_MATRIX20,
   gl_MATRIX21,
   gl_MATRIX22,
   gl_MATRIX23,
   gl_MATRIX24,
   gl_MATRIX25,
   gl_MATRIX26,
   gl_MATRIX27,
   gl_MATRIX28,
   gl_MATRIX29,
   gl_MATRIX30,
   gl_MATRIX31
) where

import Foreign.Ptr
import Graphics.Rendering.OpenGL.Raw.Core31

-- functions/tokens already in the OpenGL 3.1 core:
--
-- glVertexAttrib1s
-- glVertexAttrib1f
-- glVertexAttrib1d
-- glVertexAttrib2s
-- glVertexAttrib2f
-- glVertexAttrib2d
-- glVertexAttrib3s
-- glVertexAttrib3f
-- glVertexAttrib3d
-- glVertexAttrib4s
-- glVertexAttrib4f
-- glVertexAttrib4d
-- glVertexAttrib4Nub
-- glVertexAttrib1sv
-- glVertexAttrib1fv
-- glVertexAttrib1dv
-- glVertexAttrib2sv
-- glVertexAttrib2fv
-- glVertexAttrib2dv
-- glVertexAttrib3sv
-- glVertexAttrib3fv
-- glVertexAttrib3dv
-- glVertexAttrib4bv
-- glVertexAttrib4sv
-- glVertexAttrib4iv
-- glVertexAttrib4ubv
-- glVertexAttrib4usv
-- glVertexAttrib4uiv
-- glVertexAttrib4fv
-- glVertexAttrib4dv
-- glVertexAttrib4Nbv
-- glVertexAttrib4Nsv
-- glVertexAttrib4Niv
-- glVertexAttrib4Nubv
-- glVertexAttrib4Nusv
-- glVertexAttrib4Nuiv
-- glVertexAttribPointer
-- glEnableVertexAttribArray
-- glDisableVertexAttribArray
-- glGetProgramiv
-- glGetVertexAttribdv
-- glGetVertexAttribfv
-- glGetVertexAttribiv
-- glGetVertexAttribPointerv
-- glIsProgram
-- gl_VERTEX_PROGRAM_POINT_SIZE
-- gl_VERTEX_ATTRIB_ARRAY_ENABLED
-- gl_VERTEX_ATTRIB_ARRAY_SIZE
-- gl_VERTEX_ATTRIB_ARRAY_STRIDE
-- gl_VERTEX_ATTRIB_ARRAY_TYPE
-- gl_VERTEX_ATTRIB_ARRAY_NORMALIZED
-- gl_CURRENT_VERTEX_ATTRIB
-- gl_VERTEX_ATTRIB_ARRAY_POINTER
-- gl_MAX_VERTEX_ATTRIBS

glProgramString :: GLenum -> GLenum -> GLsizei -> Ptr a -> IO ()
glProgramString = undefined

glBindProgram :: GLenum -> GLuint -> IO ()
glBindProgram = undefined

glDeletePrograms :: GLsizei -> Ptr GLuint -> IO ()
glDeletePrograms = undefined

glGenPrograms :: GLsizei -> Ptr GLuint -> IO ()
glGenPrograms = undefined

glProgramEnvParameter4d :: GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
glProgramEnvParameter4d = undefined

glProgramEnvParameter4dv :: GLenum -> GLuint -> Ptr GLdouble -> IO ()
glProgramEnvParameter4dv = undefined

glProgramEnvParameter4f :: GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
glProgramEnvParameter4f = undefined

glProgramEnvParameter4fv :: GLenum -> GLuint -> Ptr GLfloat -> IO ()
glProgramEnvParameter4fv = undefined

glProgramLocalParameter4d :: GLenum -> GLuint -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> IO ()
glProgramLocalParameter4d = undefined

glProgramLocalParameter4dv :: GLenum -> GLuint -> Ptr GLdouble -> IO ()
glProgramLocalParameter4dv = undefined

glProgramLocalParameter4f :: GLenum -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
glProgramLocalParameter4f = undefined

glProgramLocalParameter4fv :: GLenum -> GLuint -> Ptr GLfloat -> IO ()
glProgramLocalParameter4fv = undefined

glGetProgramEnvParameterdv :: GLenum -> GLuint -> Ptr GLdouble -> IO ()
glGetProgramEnvParameterdv = undefined

glGetProgramEnvParameterfv :: GLenum -> GLuint -> Ptr GLfloat -> IO ()
glGetProgramEnvParameterfv = undefined

glGetProgramLocalParameterdv :: GLenum -> GLuint -> Ptr GLdouble -> IO ()
glGetProgramLocalParameterdv = undefined

glGetProgramLocalParameterfv :: GLenum -> GLuint -> Ptr GLfloat -> IO ()
glGetProgramLocalParameterfv = undefined

glGetProgramString :: GLenum -> GLenum -> Ptr a -> IO ()
glGetProgramString = undefined

gl_VERTEX_PROGRAM :: GLenum
gl_VERTEX_PROGRAM = 0x8620

gl_PROGRAM_FORMAT_ASCII :: GLenum
gl_PROGRAM_FORMAT_ASCII = 0x8875

gl_PROGRAM_LENGTH :: GLenum
gl_PROGRAM_LENGTH = 0x8627

gl_PROGRAM_FORMAT :: GLenum
gl_PROGRAM_FORMAT = 0x8876

gl_PROGRAM_BINDING :: GLenum
gl_PROGRAM_BINDING = 0x8677

gl_PROGRAM_INSTRUCTIONS :: GLenum
gl_PROGRAM_INSTRUCTIONS = 0x88A0

gl_MAX_PROGRAM_INSTRUCTIONS :: GLenum
gl_MAX_PROGRAM_INSTRUCTIONS = 0x88A1

gl_PROGRAM_NATIVE_INSTRUCTIONS :: GLenum
gl_PROGRAM_NATIVE_INSTRUCTIONS = 0x88A2

gl_MAX_PROGRAM_NATIVE_INSTRUCTIONS :: GLenum
gl_MAX_PROGRAM_NATIVE_INSTRUCTIONS = 0x88A3

gl_PROGRAM_TEMPORARIES :: GLenum
gl_PROGRAM_TEMPORARIES = 0x88A4

gl_MAX_PROGRAM_TEMPORARIES :: GLenum
gl_MAX_PROGRAM_TEMPORARIES = 0x88A5

gl_PROGRAM_NATIVE_TEMPORARIES :: GLenum
gl_PROGRAM_NATIVE_TEMPORARIES = 0x88A6

gl_MAX_PROGRAM_NATIVE_TEMPORARIES :: GLenum
gl_MAX_PROGRAM_NATIVE_TEMPORARIES = 0x88A7

gl_PROGRAM_PARAMETERS :: GLenum
gl_PROGRAM_PARAMETERS = 0x88A8

gl_MAX_PROGRAM_PARAMETERS :: GLenum
gl_MAX_PROGRAM_PARAMETERS = 0x88A9

gl_PROGRAM_NATIVE_PARAMETERS :: GLenum
gl_PROGRAM_NATIVE_PARAMETERS = 0x88AA

gl_MAX_PROGRAM_NATIVE_PARAMETERS :: GLenum
gl_MAX_PROGRAM_NATIVE_PARAMETERS = 0x88AB

gl_PROGRAM_ATTRIBS :: GLenum
gl_PROGRAM_ATTRIBS = 0x88AC

gl_MAX_PROGRAM_ATTRIBS :: GLenum
gl_MAX_PROGRAM_ATTRIBS = 0x88AD

gl_PROGRAM_NATIVE_ATTRIBS :: GLenum
gl_PROGRAM_NATIVE_ATTRIBS = 0x88AE

gl_MAX_PROGRAM_NATIVE_ATTRIBS :: GLenum
gl_MAX_PROGRAM_NATIVE_ATTRIBS = 0x88AF

gl_PROGRAM_ADDRESS_REGISTERS :: GLenum
gl_PROGRAM_ADDRESS_REGISTERS = 0x88B0

gl_MAX_PROGRAM_ADDRESS_REGISTERS :: GLenum
gl_MAX_PROGRAM_ADDRESS_REGISTERS = 0x88B1

gl_PROGRAM_NATIVE_ADDRESS_REGISTERS :: GLenum
gl_PROGRAM_NATIVE_ADDRESS_REGISTERS = 0x88B2

gl_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS :: GLenum
gl_MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS = 0x88B3

gl_MAX_PROGRAM_LOCAL_PARAMETERS :: GLenum
gl_MAX_PROGRAM_LOCAL_PARAMETERS = 0x88B4

gl_MAX_PROGRAM_ENV_PARAMETERS :: GLenum
gl_MAX_PROGRAM_ENV_PARAMETERS = 0x88B5

gl_PROGRAM_UNDER_NATIVE_LIMITS :: GLenum
gl_PROGRAM_UNDER_NATIVE_LIMITS = 0x88B6

gl_PROGRAM_STRING :: GLenum
gl_PROGRAM_STRING = 0x8628

gl_PROGRAM_ERROR_POSITION :: GLenum
gl_PROGRAM_ERROR_POSITION = 0x864B

gl_CURRENT_MATRIX :: GLenum
gl_CURRENT_MATRIX = 0x8641

gl_TRANSPOSE_CURRENT_MATRIX :: GLenum
gl_TRANSPOSE_CURRENT_MATRIX = 0x88B7

gl_CURRENT_MATRIX_STACK_DEPTH :: GLenum
gl_CURRENT_MATRIX_STACK_DEPTH = 0x8640

gl_MAX_PROGRAM_MATRICES :: GLenum
gl_MAX_PROGRAM_MATRICES = 0x862F

gl_MAX_PROGRAM_MATRIX_STACK_DEPTH :: GLenum
gl_MAX_PROGRAM_MATRIX_STACK_DEPTH = 0x862E

gl_PROGRAM_ERROR_STRING :: GLenum
gl_PROGRAM_ERROR_STRING = 0x8874

gl_MATRIX0 :: GLenum
gl_MATRIX0 = 0x88C0

gl_MATRIX1 :: GLenum
gl_MATRIX1 = 0x88C1

gl_MATRIX2 :: GLenum
gl_MATRIX2 = 0x88C2

gl_MATRIX3 :: GLenum
gl_MATRIX3 = 0x88C3

gl_MATRIX4 :: GLenum
gl_MATRIX4 = 0x88C4

gl_MATRIX5 :: GLenum
gl_MATRIX5 = 0x88C5

gl_MATRIX6 :: GLenum
gl_MATRIX6 = 0x88C6

gl_MATRIX7 :: GLenum
gl_MATRIX7 = 0x88C7

gl_MATRIX8 :: GLenum
gl_MATRIX8 = 0x88C8

gl_MATRIX9 :: GLenum
gl_MATRIX9 = 0x88C9

gl_MATRIX10 :: GLenum
gl_MATRIX10 = 0x88CA

gl_MATRIX11 :: GLenum
gl_MATRIX11 = 0x88CB

gl_MATRIX12 :: GLenum
gl_MATRIX12 = 0x88CC

gl_MATRIX13 :: GLenum
gl_MATRIX13 = 0x88CD

gl_MATRIX14 :: GLenum
gl_MATRIX14 = 0x88CE

gl_MATRIX15 :: GLenum
gl_MATRIX15 = 0x88CF

gl_MATRIX16 :: GLenum
gl_MATRIX16 = 0x88D0

gl_MATRIX17 :: GLenum
gl_MATRIX17 = 0x88D1

gl_MATRIX18 :: GLenum
gl_MATRIX18 = 0x88D2

gl_MATRIX19 :: GLenum
gl_MATRIX19 = 0x88D3

gl_MATRIX20 :: GLenum
gl_MATRIX20 = 0x88D4

gl_MATRIX21 :: GLenum
gl_MATRIX21 = 0x88D5

gl_MATRIX22 :: GLenum
gl_MATRIX22 = 0x88D6

gl_MATRIX23 :: GLenum
gl_MATRIX23 = 0x88D7

gl_MATRIX24 :: GLenum
gl_MATRIX24 = 0x88D8

gl_MATRIX25 :: GLenum
gl_MATRIX25 = 0x88D9

gl_MATRIX26 :: GLenum
gl_MATRIX26 = 0x88DA

gl_MATRIX27 :: GLenum
gl_MATRIX27 = 0x88DB

gl_MATRIX28 :: GLenum
gl_MATRIX28 = 0x88DC

gl_MATRIX29 :: GLenum
gl_MATRIX29 = 0x88DD

gl_MATRIX30 :: GLenum
gl_MATRIX30 = 0x88DE

gl_MATRIX31 :: GLenum
gl_MATRIX31 = 0x88DF