Commits

Joseph Marshall  committed f84781d Draft

Converted to using libc types.

  • Participants
  • Parent commits 3c62eed

Comments (0)

Files changed (2)

 def InfoLogTPL(name):
     output(
 """fn {name}(shader: uint) -> str unsafe {{
-    let length = 0i32;
+    let length = 0 as libc::c_int;
     let mut infoLog = [];
     vec::grow(infoLog, 255u, 0u8);
     let infoLog_c_str = vec::unsafe::to_ptr(infoLog);
-    GL::{name}(shader as u32, 255i32, ptr::addr_of(length), infoLog_c_str);
+    GL::{name}(shader as libc::c_uint, 255 as libc::c_int, ptr::addr_of(length), infoLog_c_str);
     ret str::from_bytes(infoLog);
 }}""".format(name=name))
 
 def glShaderSource():
     output(
 """
-fn glShaderSource(shader: uint, string: str) -> () unsafe {
+fn glShaderSource(shader: uint, string: str) unsafe {
     let string_c_str = str::as_c_str(string) { |string_| string_ };
-    ret GL::glShaderSource(shader as u32, 1i32, ptr::addr_of(string_c_str as *u8), ptr::addr_of(string.len() as i32));
+    GL::glShaderSource(shader as libc::c_uint, 1 as libc::c_int, ptr::addr_of(string_c_str as *libc::c_uchar), ptr::addr_of(string.len() as libc::c_int));
 }
 """);
 
 glGenTexture = """
 fn glGenTexture() -> uint unsafe {
-    let id = 0u32;
-    GL::glGenTextures(1 as i32, ptr::addr_of(id));
+    let id = 0 as libc::c_uint;
+    GL::glGenTextures(1 as libc::c_int, ptr::addr_of(id));
     ret id as uint;
 }
 """
     'PGI', '3DFX')
 
 types = {
-    "double": "f64",
-    "float": "f32",
-    "unsigned int": "u32",
-    "unsigned long int": "u32",
-    "long int": "i32",
-    "int": "i32",
-    "short": "i16",
-    "unsigned short": "u16",
-    "unsigned char": "u8",
-    "signed char": "i8",
-    "char": "u8",
-    "void": "()",
-    "void*": "*()",
-    "GLvoid*": "*()",
-    "GLvoid *": "*()",
-    "const GLubyte *": "*u8",
-    "GLenum": "u32",
-    "GLboolean": "u8",
+    "double": "libc::c_double",
+    "float": "libc::c_float",
+    "unsigned int": "libc::c_uint",
+    "unsigned long int": "libc::c_uint",
+    "long int": "libc::c_int",
+    "int": "libc::c_int",
+    "short": "libc::c_short",
+    "unsigned short": "libc::c_ushort",
+    "unsigned char": "libc::c_uchar",
+    "signed char": "libc::c_char",
+    "char": "libc::c_uchar",
+    "void": "libc::c_void",
+    "void*": "*libc::c_void",
+    "GLvoid*": "*libc::c_void",
+    "GLvoid *": "*libc::c_void",
+    "const GLubyte *": "*libc::c_uchar",
+    "GLenum": "libc::c_uint",
+    "GLboolean": "libc::c_uchar",
     "GLsizeiptr": "libc::ptrdiff_t",
     "GLintptr": "libc::intptr_t",
-    "GLuint": "u32",
-    "GLint64 *": "*i64",
-    "GLint64": "i64",
-    "GLuint64": "u64",
+    "GLuint": "libc::c_uint",
+    "GLint64 *": "*libc::c_longlong",
+    "GLint64": "libc::c_longlong",
+    "GLuint64": "libc::c_ulonglong",
 }
 class errors:
     unknown = set()
             t = types[type]
         else:
             t = ptr+types[type]
-            if t == '*()':
-                # HACK *u8 are used for strings.
-                t = '* u8'
+            if t == '*libc::c_void':
+                # HACK *libc::c_uchar are used for strings.
+                t = '* libc::c_uchar'
         r.append(name+': '+t)
     return ', '.join(r)
 
 
 
 nice = {
-    'u64': 'uint',
-    'u32': 'uint',
-    'u16': 'uint',
-    'u8': 'uint',
-    'i64': 'int',
-    'i32': 'int',
-    'i16': 'int',
-    'i8': 'int',
+    'libc::c_ulonglong': 'uint',
+    'libc::c_uint': 'uint',
+    'libc::c_ushort': 'uint',
+    'libc::c_uchar': 'uint',
+    'libc::c_longlong': 'int',
+    'libc::c_int': 'int',
+    'libc::c_short': 'int',
+    'libc::c_char': 'int',
 
-    'f64': 'float',
-    'f32': 'float',
+    'libc::c_double': 'float',
+    'libc::c_float': 'float',
     'f16': 'float',
     'f8': 'float',
 
-    '*u8': 'str',
+    '*libc::c_uchar': 'str',
 }
 def nice_types(params):
     if not params:
     conv = []
     for p in params.split(', '):
         n,t = p.split(": ")
-        if t == '*u8':
+        if t == '*libc::c_uchar':
             conv.append(n)
             n = n+'_c_str'
         if t in nice:
 const GL_VERSION_1_1:uint = 1u;
 const GL_VERSION_1_2:uint = 1u;
 const GL_VERSION_1_3:uint = 1u;
-type GLenum = u32; 
-type GLboolean = u8; 
-type GLbitfield = u32; 
-type GLvoid = (); 
-type GLbyte = i8; /* 1-byte signed */
-type GLshort = i16; /* 2-byte signed */
-type GLint = i32; /* 4-byte signed */
-type GLubyte = u8; /* 1-byte unsigned */
-type GLushort = u16; /* 2-byte unsigned */
-type GLuint = u32; /* 4-byte unsigned */
-type GLsizei = i32; /* 4-byte signed */
-type GLfloat = f32; /* single precision float */
-type GLclampf = f32; /* single precision float in [0,1] */
-type GLdouble = f64; /* double precision float */
-type GLclampd = f64; /* double precision float in [0,1] */
+type GLenum = libc::c_uint; 
+type GLboolean = libc::c_uchar; 
+type GLbitfield = libc::c_uint; 
+type GLvoid = libc::c_void; 
+type GLbyte = libc::c_char; /* 1-byte signed */
+type GLshort = libc::c_short; /* 2-byte signed */
+type GLint = libc::c_int; /* 4-byte signed */
+type GLubyte = libc::c_uchar; /* 1-byte unsigned */
+type GLushort = libc::c_ushort; /* 2-byte unsigned */
+type GLuint = libc::c_uint; /* 4-byte unsigned */
+type GLsizei = libc::c_int; /* 4-byte signed */
+type GLfloat = libc::c_float; /* single precision float */
+type GLclampf = libc::c_float; /* single precision float in [0,1] */
+type GLdouble = libc::c_double; /* double precision float */
+type GLclampd = libc::c_double; /* double precision float in [0,1] */
 const GL_FALSE:uint = 0x0u;
 const GL_TRUE:uint = 0x1u;
 const GL_BYTE:uint = 0x1400u;
 const GL_DOT3_RGB:uint = 0x86AEu;
 const GL_DOT3_RGBA:uint = 0x86AFu;
 const GL_CLAMP_TO_BORDER:uint = 0x812Du;
-type GLhalf = u16; 
+type GLhalf = libc::c_ushort; 
 const GL_BLEND_DST_RGB:uint = 0x80C8u;
 const GL_BLEND_SRC_RGB:uint = 0x80C9u;
 const GL_BLEND_DST_ALPHA:uint = 0x80CAu;
 const GL_MAX_FRAGMENT_IMAGE_UNIFORMS:uint = 0x90CEu;
 const GL_MAX_COMBINED_IMAGE_UNIFORMS:uint = 0x90CFu;
 const GL_TEXTURE_IMMUTABLE_FORMAT:uint = 0x912Fu;
-type GLchar = u8; 
+type GLchar = libc::c_uchar; 
 const GL_VERSION_1_0:uint = 1u;
 const GL_VERSION_1_4:uint = 1u;
 const GL_VERSION_1_5:uint = 1u;
 const GL_VERSION_4_1:uint = 1u;
 const GL_VERSION_4_2:uint = 1u;
 native mod GL {
-    fn glClearColor(red: f32, green: f32, blue: f32, alpha: f32) -> ();
-    fn glClear(mask: u32) -> ();
-    fn glIndexMask(mask: u32) -> ();
-    fn glColorMask(red: u8, green: u8, blue: u8, alpha: u8) -> ();
-    fn glAlphaFunc(func: u32, ref: f32) -> ();
-    fn glBlendFunc(sfactor: u32, dfactor: u32) -> ();
-    fn glLogicOp(opcode: u32) -> ();
-    fn glCullFace(mode: u32) -> ();
-    fn glFrontFace(mode: u32) -> ();
-    fn glPointSize(size: f32) -> ();
-    fn glLineWidth(width: f32) -> ();
-    fn glLineStipple(factor: i32, pattern: u16) -> ();
-    fn glPolygonMode(face: u32, mode: u32) -> ();
-    fn glPolygonOffset(factor: f32, units: f32) -> ();
-    fn glPolygonStipple(mask: *u8) -> ();
-    fn glGetPolygonStipple(mask: *u8) -> ();
-    fn glEdgeFlag(flag: u8) -> ();
-    fn glEdgeFlagv(flag: *u8) -> ();
-    fn glScissor(x: i32, y: i32, width: i32, height: i32) -> ();
-    fn glClipPlane(plane: u32, equation: *f64) -> ();
-    fn glGetClipPlane(plane: u32, equation: *f64) -> ();
-    fn glDrawBuffer(mode: u32) -> ();
-    fn glReadBuffer(mode: u32) -> ();
-    fn glEnable(cap: u32) -> ();
-    fn glDisable(cap: u32) -> ();
-    fn glIsEnabled(cap: u32) -> u8;
-    fn glEnableClientState(cap: u32) -> ();
-    fn glGetDoublev(pname: u32, params: *f64) -> ();
-    fn glGetFloatv(pname: u32, params: *f32) -> ();
-    fn glGetIntegerv(pname: u32, params: *i32) -> ();
-    fn glPushAttrib(mask: u32) -> ();
-    fn glPopAttrib() -> ();
-    fn glPushClientAttrib(mask: u32) -> ();
-    fn glGetError() -> u32;
-    fn glGetString(name: u32) -> *u8;
-    fn glFinish() -> ();
-    fn glFlush() -> ();
-    fn glHint(target: u32, mode: u32) -> ();
-    fn glClearDepth(depth: f64) -> ();
-    fn glDepthFunc(func: u32) -> ();
-    fn glDepthMask(flag: u8) -> ();
-    fn glDepthRange(near_val: f64, far_val: f64) -> ();
-    fn glClearAccum(red: f32, green: f32, blue: f32, alpha: f32) -> ();
-    fn glAccum(op: u32, value: f32) -> ();
-    fn glMatrixMode(mode: u32) -> ();
-    fn glOrtho(left: f64, right: f64, bottom: f64, top: f64, near_val: f64, far_val: f64) -> ();
-    fn glFrustum(left: f64, right: f64, bottom: f64, top: f64, near_val: f64, far_val: f64) -> ();
-    fn glViewport(x: i32, y: i32, width: i32, height: i32) -> ();
-    fn glPushMatrix() -> ();
-    fn glPopMatrix() -> ();
-    fn glLoadIdentity() -> ();
-    fn glLoadMatrixd(m: *f64) -> ();
-    fn glLoadMatrixf(m: *f32) -> ();
-    fn glMultMatrixd(m: *f64) -> ();
-    fn glMultMatrixf(m: *f32) -> ();
-    fn glRotated(angle: f64, x: f64, y: f64, z: f64) -> ();
-    fn glRotatef(angle: f32, x: f32, y: f32, z: f32) -> ();
-    fn glScaled(x: f64, y: f64, z: f64) -> ();
-    fn glScalef(x: f32, y: f32, z: f32) -> ();
-    fn glTranslated(x: f64, y: f64, z: f64) -> ();
-    fn glTranslatef(x: f32, y: f32, z: f32) -> ();
-    fn glIsList(list: u32) -> u8;
-    fn glDeleteLists(list: u32, range: i32) -> ();
-    fn glGenLists(range: i32) -> u32;
-    fn glNewList(list: u32, mode: u32) -> ();
-    fn glEndList() -> ();
-    fn glCallList(list: u32) -> ();
-    fn glCallLists(n: i32, type_: u32, lists: * u8) -> ();
-    fn glListBase(base: u32) -> ();
-    fn glBegin(mode: u32) -> ();
-    fn glEnd() -> ();
-    fn glVertex2d(x: f64, y: f64) -> ();
-    fn glVertex2f(x: f32, y: f32) -> ();
-    fn glVertex2i(x: i32, y: i32) -> ();
-    fn glVertex2s(x: i16, y: i16) -> ();
-    fn glVertex3d(x: f64, y: f64, z: f64) -> ();
-    fn glVertex3f(x: f32, y: f32, z: f32) -> ();
-    fn glVertex3i(x: i32, y: i32, z: i32) -> ();
-    fn glVertex3s(x: i16, y: i16, z: i16) -> ();
-    fn glVertex4d(x: f64, y: f64, z: f64, w: f64) -> ();
-    fn glVertex4f(x: f32, y: f32, z: f32, w: f32) -> ();
-    fn glVertex4i(x: i32, y: i32, z: i32, w: i32) -> ();
-    fn glVertex4s(x: i16, y: i16, z: i16, w: i16) -> ();
-    fn glVertex2dv(v: *f64) -> ();
-    fn glVertex2fv(v: *f32) -> ();
-    fn glVertex2iv(v: *i32) -> ();
-    fn glVertex2sv(v: *i16) -> ();
-    fn glVertex3dv(v: *f64) -> ();
-    fn glVertex3fv(v: *f32) -> ();
-    fn glVertex3iv(v: *i32) -> ();
-    fn glVertex3sv(v: *i16) -> ();
-    fn glVertex4dv(v: *f64) -> ();
-    fn glVertex4fv(v: *f32) -> ();
-    fn glVertex4iv(v: *i32) -> ();
-    fn glVertex4sv(v: *i16) -> ();
-    fn glNormal3b(nx: i8, ny: i8, nz: i8) -> ();
-    fn glNormal3d(nx: f64, ny: f64, nz: f64) -> ();
-    fn glNormal3f(nx: f32, ny: f32, nz: f32) -> ();
-    fn glNormal3i(nx: i32, ny: i32, nz: i32) -> ();
-    fn glNormal3s(nx: i16, ny: i16, nz: i16) -> ();
-    fn glNormal3bv(v: *i8) -> ();
-    fn glNormal3dv(v: *f64) -> ();
-    fn glNormal3fv(v: *f32) -> ();
-    fn glNormal3iv(v: *i32) -> ();
-    fn glNormal3sv(v: *i16) -> ();
-    fn glIndexd(c: f64) -> ();
-    fn glIndexf(c: f32) -> ();
-    fn glIndexi(c: i32) -> ();
-    fn glIndexs(c: i16) -> ();
-    fn glIndexub(c: u8) -> ();
-    fn glIndexfv(c: *f32) -> ();
-    fn glIndexiv(c: *i32) -> ();
-    fn glIndexsv(c: *i16) -> ();
-    fn glIndexubv(c: *u8) -> ();
-    fn glColor3d(red: f64, green: f64, blue: f64) -> ();
-    fn glColor3f(red: f32, green: f32, blue: f32) -> ();
-    fn glColor3i(red: i32, green: i32, blue: i32) -> ();
-    fn glColor3s(red: i16, green: i16, blue: i16) -> ();
-    fn glColor3ub(red: u8, green: u8, blue: u8) -> ();
-    fn glColor3ui(red: u32, green: u32, blue: u32) -> ();
-    fn glColor3us(red: u16, green: u16, blue: u16) -> ();
-    fn glColor4b(red: i8, green: i8, blue: i8, alpha: i8) -> ();
-    fn glColor4d(red: f64, green: f64, blue: f64, alpha: f64) -> ();
-    fn glColor4f(red: f32, green: f32, blue: f32, alpha: f32) -> ();
-    fn glColor4i(red: i32, green: i32, blue: i32, alpha: i32) -> ();
-    fn glColor4s(red: i16, green: i16, blue: i16, alpha: i16) -> ();
-    fn glColor4ub(red: u8, green: u8, blue: u8, alpha: u8) -> ();
-    fn glColor4ui(red: u32, green: u32, blue: u32, alpha: u32) -> ();
-    fn glColor4us(red: u16, green: u16, blue: u16, alpha: u16) -> ();
-    fn glColor3bv(v: *i8) -> ();
-    fn glColor3dv(v: *f64) -> ();
-    fn glColor3fv(v: *f32) -> ();
-    fn glColor3iv(v: *i32) -> ();
-    fn glColor3sv(v: *i16) -> ();
-    fn glColor3ubv(v: *u8) -> ();
-    fn glColor3uiv(v: *u32) -> ();
-    fn glColor3usv(v: *u16) -> ();
-    fn glColor4bv(v: *i8) -> ();
-    fn glColor4dv(v: *f64) -> ();
-    fn glColor4fv(v: *f32) -> ();
-    fn glColor4iv(v: *i32) -> ();
-    fn glColor4sv(v: *i16) -> ();
-    fn glColor4ubv(v: *u8) -> ();
-    fn glColor4uiv(v: *u32) -> ();
-    fn glColor4usv(v: *u16) -> ();
-    fn glTexCoord1d(s: f64) -> ();
-    fn glTexCoord1f(s: f32) -> ();
-    fn glTexCoord1i(s: i32) -> ();
-    fn glTexCoord1s(s: i16) -> ();
-    fn glTexCoord2d(s: f64, t: f64) -> ();
-    fn glTexCoord2f(s: f32, t: f32) -> ();
-    fn glTexCoord2i(s: i32, t: i32) -> ();
-    fn glTexCoord2s(s: i16, t: i16) -> ();
-    fn glTexCoord3d(s: f64, t: f64, r: f64) -> ();
-    fn glTexCoord3f(s: f32, t: f32, r: f32) -> ();
-    fn glTexCoord3i(s: i32, t: i32, r: i32) -> ();
-    fn glTexCoord3s(s: i16, t: i16, r: i16) -> ();
-    fn glTexCoord4d(s: f64, t: f64, r: f64, q: f64) -> ();
-    fn glTexCoord4f(s: f32, t: f32, r: f32, q: f32) -> ();
-    fn glTexCoord4i(s: i32, t: i32, r: i32, q: i32) -> ();
-    fn glTexCoord4s(s: i16, t: i16, r: i16, q: i16) -> ();
-    fn glTexCoord1dv(v: *f64) -> ();
-    fn glTexCoord1fv(v: *f32) -> ();
-    fn glTexCoord1iv(v: *i32) -> ();
-    fn glTexCoord1sv(v: *i16) -> ();
-    fn glTexCoord2dv(v: *f64) -> ();
-    fn glTexCoord2fv(v: *f32) -> ();
-    fn glTexCoord2iv(v: *i32) -> ();
-    fn glTexCoord2sv(v: *i16) -> ();
-    fn glTexCoord3dv(v: *f64) -> ();
-    fn glTexCoord3fv(v: *f32) -> ();
-    fn glTexCoord3iv(v: *i32) -> ();
-    fn glTexCoord3sv(v: *i16) -> ();
-    fn glTexCoord4dv(v: *f64) -> ();
-    fn glTexCoord4fv(v: *f32) -> ();
-    fn glTexCoord4iv(v: *i32) -> ();
-    fn glTexCoord4sv(v: *i16) -> ();
-    fn glRasterPos2d(x: f64, y: f64) -> ();
-    fn glRasterPos2f(x: f32, y: f32) -> ();
-    fn glRasterPos2i(x: i32, y: i32) -> ();
-    fn glRasterPos2s(x: i16, y: i16) -> ();
-    fn glRasterPos3d(x: f64, y: f64, z: f64) -> ();
-    fn glRasterPos3f(x: f32, y: f32, z: f32) -> ();
-    fn glRasterPos3i(x: i32, y: i32, z: i32) -> ();
-    fn glRasterPos3s(x: i16, y: i16, z: i16) -> ();
-    fn glRasterPos4d(x: f64, y: f64, z: f64, w: f64) -> ();
-    fn glRasterPos4f(x: f32, y: f32, z: f32, w: f32) -> ();
-    fn glRasterPos4i(x: i32, y: i32, z: i32, w: i32) -> ();
-    fn glRasterPos4s(x: i16, y: i16, z: i16, w: i16) -> ();
-    fn glRasterPos2dv(v: *f64) -> ();
-    fn glRasterPos2fv(v: *f32) -> ();
-    fn glRasterPos2iv(v: *i32) -> ();
-    fn glRasterPos2sv(v: *i16) -> ();
-    fn glRasterPos3dv(v: *f64) -> ();
-    fn glRasterPos3fv(v: *f32) -> ();
-    fn glRasterPos3iv(v: *i32) -> ();
-    fn glRasterPos3sv(v: *i16) -> ();
-    fn glRasterPos4dv(v: *f64) -> ();
-    fn glRasterPos4fv(v: *f32) -> ();
-    fn glRasterPos4iv(v: *i32) -> ();
-    fn glRasterPos4sv(v: *i16) -> ();
-    fn glRectd(x1: f64, y1: f64, x2: f64, y2: f64) -> ();
-    fn glRectf(x1: f32, y1: f32, x2: f32, y2: f32) -> ();
-    fn glRecti(x1: i32, y1: i32, x2: i32, y2: i32) -> ();
-    fn glRects(x1: i16, y1: i16, x2: i16, y2: i16) -> ();
-    fn glRectdv(v1: *f64, v2: *f64) -> ();
-    fn glRectfv(v1: *f32, v2: *f32) -> ();
-    fn glRectiv(v1: *i32, v2: *i32) -> ();
-    fn glRectsv(v1: *i16, v2: *i16) -> ();
-    fn glVertexPointer(size: i32, type_: u32, stride: i32, ptr: * u8) -> ();
-    fn glNormalPointer(type_: u32, stride: i32, ptr: * u8) -> ();
-    fn glColorPointer(size: i32, type_: u32, stride: i32, ptr: * u8) -> ();
-    fn glIndexPointer(type_: u32, stride: i32, ptr: * u8) -> ();
-    fn glTexCoordPointer(size: i32, type_: u32, stride: i32, ptr: * u8) -> ();
-    fn glEdgeFlagPointer(stride: i32, ptr: * u8) -> ();
-    fn glGetPointerv(pname: u32, params: **()) -> ();
-    fn glArrayElement(i: i32) -> ();
-    fn glDrawArrays(mode: u32, first: i32, count: i32) -> ();
-    fn glDrawElements(mode: u32, count: i32, type_: u32, indices: * u8) -> ();
-    fn glInterleavedArrays(format: u32, stride: i32, pointer: * u8) -> ();
-    fn glShadeModel(mode: u32) -> ();
-    fn glLightf(light: u32, pname: u32, param: f32) -> ();
-    fn glLighti(light: u32, pname: u32, param: i32) -> ();
-    fn glLightfv(light: u32, pname: u32, params: *f32) -> ();
-    fn glLightiv(light: u32, pname: u32, params: *i32) -> ();
-    fn glGetLightfv(light: u32, pname: u32, params: *f32) -> ();
-    fn glGetLightiv(light: u32, pname: u32, params: *i32) -> ();
-    fn glLightModelf(pname: u32, param: f32) -> ();
-    fn glLightModeli(pname: u32, param: i32) -> ();
-    fn glLightModelfv(pname: u32, params: *f32) -> ();
-    fn glLightModeliv(pname: u32, params: *i32) -> ();
-    fn glMaterialf(face: u32, pname: u32, param: f32) -> ();
-    fn glMateriali(face: u32, pname: u32, param: i32) -> ();
-    fn glMaterialfv(face: u32, pname: u32, params: *f32) -> ();
-    fn glMaterialiv(face: u32, pname: u32, params: *i32) -> ();
-    fn glGetMaterialfv(face: u32, pname: u32, params: *f32) -> ();
-    fn glGetMaterialiv(face: u32, pname: u32, params: *i32) -> ();
-    fn glColorMaterial(face: u32, mode: u32) -> ();
-    fn glPixelZoom(xfactor: f32, yfactor: f32) -> ();
-    fn glPixelStoref(pname: u32, param: f32) -> ();
-    fn glPixelStorei(pname: u32, param: i32) -> ();
-    fn glPixelTransferf(pname: u32, param: f32) -> ();
-    fn glPixelTransferi(pname: u32, param: i32) -> ();
-    fn glPixelMapfv(map: u32, mapsize: i32, values: *f32) -> ();
-    fn glPixelMapuiv(map: u32, mapsize: i32, values: *u32) -> ();
-    fn glPixelMapusv(map: u32, mapsize: i32, values: *u16) -> ();
-    fn glGetPixelMapfv(map: u32, values: *f32) -> ();
-    fn glGetPixelMapuiv(map: u32, values: *u32) -> ();
-    fn glGetPixelMapusv(map: u32, values: *u16) -> ();
-    fn glBitmap(width: i32, height: i32, xorig: f32, yorig: f32, xmove: f32, ymove: f32, bitmap: *u8) -> ();
-    fn glReadPixels(x: i32, y: i32, width: i32, height: i32, format: u32, type_: u32, pixels: * u8) -> ();
-    fn glDrawPixels(width: i32, height: i32, format: u32, type_: u32, pixels: * u8) -> ();
-    fn glCopyPixels(x: i32, y: i32, width: i32, height: i32, type_: u32) -> ();
-    fn glStencilFunc(func: u32, ref: i32, mask: u32) -> ();
-    fn glStencilMask(mask: u32) -> ();
-    fn glStencilOp(fail_: u32, zfail: u32, zpass: u32) -> ();
-    fn glClearStencil(s: i32) -> ();
-    fn glTexGend(coord: u32, pname: u32, param: f64) -> ();
-    fn glTexGenf(coord: u32, pname: u32, param: f32) -> ();
-    fn glTexGeni(coord: u32, pname: u32, param: i32) -> ();
-    fn glTexGendv(coord: u32, pname: u32, params: *f64) -> ();
-    fn glTexGenfv(coord: u32, pname: u32, params: *f32) -> ();
-    fn glTexGeniv(coord: u32, pname: u32, params: *i32) -> ();
-    fn glGetTexGendv(coord: u32, pname: u32, params: *f64) -> ();
-    fn glGetTexGenfv(coord: u32, pname: u32, params: *f32) -> ();
-    fn glGetTexGeniv(coord: u32, pname: u32, params: *i32) -> ();
-    fn glTexEnvf(target: u32, pname: u32, param: f32) -> ();
-    fn glTexEnvi(target: u32, pname: u32, param: i32) -> ();
-    fn glTexEnvfv(target: u32, pname: u32, params: *f32) -> ();
-    fn glTexEnviv(target: u32, pname: u32, params: *i32) -> ();
-    fn glGetTexEnvfv(target: u32, pname: u32, params: *f32) -> ();
-    fn glGetTexEnviv(target: u32, pname: u32, params: *i32) -> ();
-    fn glTexParameterf(target: u32, pname: u32, param: f32) -> ();
-    fn glTexParameteri(target: u32, pname: u32, param: i32) -> ();
-    fn glTexParameterfv(target: u32, pname: u32, params: *f32) -> ();
-    fn glTexParameteriv(target: u32, pname: u32, params: *i32) -> ();
-    fn glGetTexParameterfv(target: u32, pname: u32, params: *f32) -> ();
-    fn glGetTexParameteriv(target: u32, pname: u32, params: *i32) -> ();
-    fn glGetTexLevelParameterfv(target: u32, level: i32, pname: u32, params: *f32) -> ();
-    fn glGetTexLevelParameteriv(target: u32, level: i32, pname: u32, params: *i32) -> ();
-    fn glTexImage1D(target: u32, level: i32, internalFormat: i32, width: i32, border: i32, format: u32, type_: u32, pixels: * u8) -> ();
-    fn glTexImage2D(target: u32, level: i32, internalFormat: i32, width: i32, height: i32, border: i32, format: u32, type_: u32, pixels: * u8) -> ();
-    fn glGetTexImage(target: u32, level: i32, format: u32, type_: u32, pixels: * u8) -> ();
-    fn glGenTextures(n: i32, textures: *u32) -> ();
-    fn glDeleteTextures(n: i32, textures: *u32) -> ();
-    fn glBindTexture(target: u32, texture: u32) -> ();
-    fn glPrioritizeTextures(n: i32, textures: *u32, priorities: *f32) -> ();
-    fn glAreTexturesResident(n: i32, textures: *u32, residences: *u8) -> u8;
-    fn glIsTexture(texture: u32) -> u8;
-    fn glTexSubImage1D(target: u32, level: i32, xoffset: i32, width: i32, format: u32, type_: u32, pixels: * u8) -> ();
-    fn glTexSubImage2D(target: u32, level: i32, xoffset: i32, yoffset: i32, width: i32, height: i32, format: u32, type_: u32, pixels: * u8) -> ();
-    fn glCopyTexImage1D(target: u32, level: i32, internalformat: u32, x: i32, y: i32, width: i32, border: i32) -> ();
-    fn glCopyTexImage2D(target: u32, level: i32, internalformat: u32, x: i32, y: i32, width: i32, height: i32, border: i32) -> ();
-    fn glCopyTexSubImage1D(target: u32, level: i32, xoffset: i32, x: i32, y: i32, width: i32) -> ();
-    fn glCopyTexSubImage2D(target: u32, level: i32, xoffset: i32, yoffset: i32, x: i32, y: i32, width: i32, height: i32) -> ();
-    fn glMap1d(target: u32, u1: f64, u2: f64, stride: i32, order: i32, points: *f64) -> ();
-    fn glMap1f(target: u32, u1: f32, u2: f32, stride: i32, order: i32, points: *f32) -> ();
-    fn glMap2d(target: u32, u1: f64, u2: f64, ustride: i32, uorder: i32, v1: f64, v2: f64, vstride: i32, vorder: i32, points: *f64) -> ();
-    fn glMap2f(target: u32, u1: f32, u2: f32, ustride: i32, uorder: i32, v1: f32, v2: f32, vstride: i32, vorder: i32, points: *f32) -> ();
-    fn glGetMapdv(target: u32, query: u32, v: *f64) -> ();
-    fn glGetMapfv(target: u32, query: u32, v: *f32) -> ();
-    fn glGetMapiv(target: u32, query: u32, v: *i32) -> ();
-    fn glEvalCoord1d(u: f64) -> ();
-    fn glEvalCoord1f(u: f32) -> ();
-    fn glEvalCoord1dv(u: *f64) -> ();
-    fn glEvalCoord1fv(u: *f32) -> ();
-    fn glEvalCoord2d(u: f64, v: f64) -> ();
-    fn glEvalCoord2f(u: f32, v: f32) -> ();
-    fn glEvalCoord2dv(u: *f64) -> ();
-    fn glEvalCoord2fv(u: *f32) -> ();
-    fn glMapGrid1d(un: i32, u1: f64, u2: f64) -> ();
-    fn glMapGrid1f(un: i32, u1: f32, u2: f32) -> ();
-    fn glMapGrid2d(un: i32, u1: f64, u2: f64, vn: i32, v1: f64, v2: f64) -> ();
-    fn glMapGrid2f(un: i32, u1: f32, u2: f32, vn: i32, v1: f32, v2: f32) -> ();
-    fn glEvalPoint1(i: i32) -> ();
-    fn glEvalPoint2(i: i32, j: i32) -> ();
-    fn glEvalMesh1(mode: u32, i1: i32, i2: i32) -> ();
-    fn glEvalMesh2(mode: u32, i1: i32, i2: i32, j1: i32, j2: i32) -> ();
-    fn glFogf(pname: u32, param: f32) -> ();
-    fn glFogi(pname: u32, param: i32) -> ();
-    fn glFogfv(pname: u32, params: *f32) -> ();
-    fn glFogiv(pname: u32, params: *i32) -> ();
-    fn glFeedbackBuffer(size: i32, type_: u32, buffer: *f32) -> ();
-    fn glPassThrough(token: f32) -> ();
-    fn glSelectBuffer(size: i32, buffer: *u32) -> ();
-    fn glInitNames() -> ();
-    fn glLoadName(name: u32) -> ();
-    fn glPushName(name: u32) -> ();
-    fn glPopName() -> ();
-    fn glDrawRangeElements(mode: u32, start: u32, end: u32, count: i32, type_: u32, indices: * u8) -> ();
-    fn glTexImage3D(target: u32, level: i32, internalFormat: i32, width: i32, height: i32, depth: i32, border: i32, format: u32, type_: u32, pixels: * u8) -> ();
-    fn glTexSubImage3D(target: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, type_: u32, pixels: * u8) -> ();
-    fn glCopyTexSubImage3D(target: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, x: i32, y: i32, width: i32, height: i32) -> ();
-    fn glColorTable(target: u32, internalformat: u32, width: i32, format: u32, type_: u32, table: * u8) -> ();
-    fn glColorSubTable(target: u32, start: i32, count: i32, format: u32, type_: u32, data: * u8) -> ();
-    fn glColorTableParameteriv(target: u32, pname: u32, params: *i32) -> ();
-    fn glColorTableParameterfv(target: u32, pname: u32, params: *f32) -> ();
-    fn glCopyColorSubTable(target: u32, start: i32, x: i32, y: i32, width: i32) -> ();
-    fn glCopyColorTable(target: u32, internalformat: u32, x: i32, y: i32, width: i32) -> ();
-    fn glGetColorTable(target: u32, format: u32, type_: u32, table: * u8) -> ();
-    fn glGetColorTableParameterfv(target: u32, pname: u32, params: *f32) -> ();
-    fn glGetColorTableParameteriv(target: u32, pname: u32, params: *i32) -> ();
-    fn glBlendEquation(mode: u32) -> ();
-    fn glBlendColor(red: f32, green: f32, blue: f32, alpha: f32) -> ();
-    fn glHistogram(target: u32, width: i32, internalformat: u32, sink: u8) -> ();
-    fn glResetHistogram(target: u32) -> ();
-    fn glGetHistogram(target: u32, reset: u8, format: u32, type_: u32, values: * u8) -> ();
-    fn glGetHistogramParameterfv(target: u32, pname: u32, params: *f32) -> ();
-    fn glGetHistogramParameteriv(target: u32, pname: u32, params: *i32) -> ();
-    fn glMinmax(target: u32, internalformat: u32, sink: u8) -> ();
-    fn glResetMinmax(target: u32) -> ();
-    fn glGetMinmax(target: u32, reset: u8, format: u32, types: u32, values: * u8) -> ();
-    fn glGetMinmaxParameterfv(target: u32, pname: u32, params: *f32) -> ();
-    fn glGetMinmaxParameteriv(target: u32, pname: u32, params: *i32) -> ();
-    fn glConvolutionFilter1D(target: u32, internalformat: u32, width: i32, format: u32, type_: u32, image: * u8) -> ();
-    fn glConvolutionFilter2D(target: u32, internalformat: u32, width: i32, height: i32, format: u32, type_: u32, image: * u8) -> ();
-    fn glConvolutionParameterf(target: u32, pname: u32, params: f32) -> ();
-    fn glConvolutionParameterfv(target: u32, pname: u32, params: *f32) -> ();
-    fn glConvolutionParameteri(target: u32, pname: u32, params: i32) -> ();
-    fn glConvolutionParameteriv(target: u32, pname: u32, params: *i32) -> ();
-    fn glCopyConvolutionFilter1D(target: u32, internalformat: u32, x: i32, y: i32, width: i32) -> ();
-    fn glCopyConvolutionFilter2D(target: u32, internalformat: u32, x: i32, y: i32, width: i32, height: i32) -> ();
-    fn glGetConvolutionFilter(target: u32, format: u32, type_: u32, image: * u8) -> ();
-    fn glGetConvolutionParameterfv(target: u32, pname: u32, params: *f32) -> ();
-    fn glGetConvolutionParameteriv(target: u32, pname: u32, params: *i32) -> ();
-    fn glSeparableFilter2D(target: u32, internalformat: u32, width: i32, height: i32, format: u32, type_: u32, row: * u8, column: * u8) -> ();
-    fn glGetSeparableFilter(target: u32, format: u32, type_: u32, row: * u8, column: * u8, span: * u8) -> ();
-    fn glActiveTexture(texture: u32) -> ();
-    fn glClientActiveTexture(texture: u32) -> ();
-    fn glCompressedTexImage1D(target: u32, level: i32, internalformat: u32, width: i32, border: i32, imageSize: i32, data: * u8) -> ();
-    fn glCompressedTexImage2D(target: u32, level: i32, internalformat: u32, width: i32, height: i32, border: i32, imageSize: i32, data: * u8) -> ();
-    fn glCompressedTexImage3D(target: u32, level: i32, internalformat: u32, width: i32, height: i32, depth: i32, border: i32, imageSize: i32, data: * u8) -> ();
-    fn glCompressedTexSubImage1D(target: u32, level: i32, xoffset: i32, width: i32, format: u32, imageSize: i32, data: * u8) -> ();
-    fn glCompressedTexSubImage2D(target: u32, level: i32, xoffset: i32, yoffset: i32, width: i32, height: i32, format: u32, imageSize: i32, data: * u8) -> ();
-    fn glCompressedTexSubImage3D(target: u32, level: i32, xoffset: i32, yoffset: i32, zoffset: i32, width: i32, height: i32, depth: i32, format: u32, imageSize: i32, data: * u8) -> ();
-    fn glGetCompressedTexImage(target: u32, lod: i32, img: * u8) -> ();
-    fn glMultiTexCoord1d(target: u32, s: f64) -> ();
-    fn glMultiTexCoord1dv(target: u32, v: *f64) -> ();
-    fn glMultiTexCoord1f(target: u32, s: f32) -> ();
-    fn glMultiTexCoord1fv(target: u32, v: *f32) -> ();
-    fn glMultiTexCoord1i(target: u32, s: i32) -> ();
-    fn glMultiTexCoord1iv(target: u32, v: *i32) -> ();
-    fn glMultiTexCoord1s(target: u32, s: i16) -> ();
-    fn glMultiTexCoord1sv(target: u32, v: *i16) -> ();
-    fn glMultiTexCoord2d(target: u32, s: f64, t: f64) -> ();
-    fn glMultiTexCoord2dv(target: u32, v: *f64) -> ();
-    fn glMultiTexCoord2f(target: u32, s: f32, t: f32) -> ();
-    fn glMultiTexCoord2fv(target: u32, v: *f32) -> ();
-    fn glMultiTexCoord2i(target: u32, s: i32, t: i32) -> ();
-    fn glMultiTexCoord2iv(target: u32, v: *i32) -> ();
-    fn glMultiTexCoord2s(target: u32, s: i16, t: i16) -> ();
-    fn glMultiTexCoord2sv(target: u32, v: *i16) -> ();
-    fn glMultiTexCoord3d(target: u32, s: f64, t: f64, r: f64) -> ();
-    fn glMultiTexCoord3dv(target: u32, v: *f64) -> ();
-    fn glMultiTexCoord3f(target: u32, s: f32, t: f32, r: f32) -> ();
-    fn glMultiTexCoord3fv(target: u32, v: *f32) -> ();
-    fn glMultiTexCoord3i(target: u32, s: i32, t: i32, r: i32) -> ();
-    fn glMultiTexCoord3iv(target: u32, v: *i32) -> ();
-    fn glMultiTexCoord3s(target: u32, s: i16, t: i16, r: i16) -> ();
-    fn glMultiTexCoord3sv(target: u32, v: *i16) -> ();
-    fn glMultiTexCoord4d(target: u32, s: f64, t: f64, r: f64, q: f64) -> ();
-    fn glMultiTexCoord4dv(target: u32, v: *f64) -> ();
-    fn glMultiTexCoord4f(target: u32, s: f32, t: f32, r: f32, q: f32) -> ();
-    fn glMultiTexCoord4fv(target: u32, v: *f32) -> ();
-    fn glMultiTexCoord4i(target: u32, s: i32, t: i32, r: i32, q: i32) -> ();
-    fn glMultiTexCoord4iv(target: u32, v: *i32) -> ();
-    fn glMultiTexCoord4s(target: u32, s: i16, t: i16, r: i16, q: i16) -> ();
-    fn glMultiTexCoord4sv(target: u32, v: *i16) -> ();
-    fn glLoadTransposeMatrixd(m: f64) -> ();
-    fn glLoadTransposeMatrixf(m: f32) -> ();
-    fn glMultTransposeMatrixd(m: f64) -> ();
-    fn glMultTransposeMatrixf(m: f32) -> ();
-    fn glSampleCoverage(value: f32, invert: u8) -> ();
-    fn glGetBooleanv(pname: u32, params: *u8) -> ();
-    fn glBlendFuncSeparate(sfactorRGB: u32, dfactorRGB: u32, sfactorAlpha: u32, dfactorAlpha: u32) -> ();
-    fn glMultiDrawArrays(mode: u32, first: *i32, count: *i32, primcount: i32) -> ();
-    fn glMultiDrawElements(mode: u32, count: *i32, type_: u32, indices: **(), primcount: i32) -> ();
-    fn glPointParameterf(pname: u32, param: f32) -> ();
-    fn glPointParameterfv(pname: u32, params: *f32) -> ();
-    fn glPointParameteri(pname: u32, param: i32) -> ();
-    fn glPointParameteriv(pname: u32, params: *i32) -> ();
-    fn glGenQueries(n: i32, ids: *u32) -> ();
-    fn glDeleteQueries(n: i32, ids: *u32) -> ();
-    fn glIsQuery(id: u32) -> u8;
-    fn glBeginQuery(target: u32, id: u32) -> ();
-    fn glEndQuery(target: u32) -> ();
-    fn glGetQueryiv(target: u32, pname: u32, params: *i32) -> ();
-    fn glGetQueryObjectiv(id: u32, pname: u32, params: *i32) -> ();
-    fn glGetQueryObjectuiv(id: u32, pname: u32, params: *u32) -> ();
-    fn glBindBuffer(target: u32, buffer: u32) -> ();
-    fn glDeleteBuffers(n: i32, buffers: *u32) -> ();
-    fn glGenBuffers(n: i32, buffers: *u32) -> ();
-    fn glIsBuffer(buffer: u32) -> u8;
-    fn glBufferData(target: u32, size: libc::ptrdiff_t, data: * u8, usage: u32) -> ();
-    fn glBufferSubData(target: u32, offset: libc::intptr_t, size: libc::ptrdiff_t, data: * u8) -> ();
-    fn glGetBufferSubData(target: u32, offset: libc::intptr_t, size: libc::ptrdiff_t, data: * u8) -> ();
-    fn glMapBuffer(target: u32, access: u32) -> *();
-    fn glUnmapBuffer(target: u32) -> u8;
-    fn glGetBufferParameteriv(target: u32, pname: u32, params: *i32) -> ();
-    fn glGetBufferPointerv(target: u32, pname: u32, params: **()) -> ();
-    fn glBlendEquationSeparate(modeRGB: u32, modeAlpha: u32) -> ();
-    fn glDrawBuffers(n: i32, bufs: *u32) -> ();
-    fn glStencilOpSeparate(face: u32, sfail: u32, dpfail: u32, dppass: u32) -> ();
-    fn glStencilFuncSeparate(face: u32, func: u32, ref: i32, mask: u32) -> ();
-    fn glStencilMaskSeparate(face: u32, mask: u32) -> ();
-    fn glAttachShader(program: u32, shader: u32) -> ();
-    fn glBindAttribLocation(program: u32, index: u32, name: *u8) -> ();
-    fn glCompileShader(shader: u32) -> ();
-    fn glCreateProgram() -> u32;
-    fn glCreateShader(type_: u32) -> u32;
-    fn glDeleteProgram(program: u32) -> ();
-    fn glDeleteShader(shader: u32) -> ();
-    fn glDetachShader(program: u32, shader: u32) -> ();
-    fn glDisableVertexAttribArray(index: u32) -> ();
-    fn glEnableVertexAttribArray(index: u32) -> ();
-    fn glGetActiveAttrib(program: u32, index: u32, bufSize: i32, length: *i32, size: *i32, type_: *u32, name: *u8) -> ();
-    fn glGetActiveUniform(program: u32, index: u32, bufSize: i32, length: *i32, size: *i32, type_: *u32, name: *u8) -> ();
-    fn glGetAttachedShaders(program: u32, maxCount: i32, count: *i32, obj: *u32) -> ();
-    fn glGetAttribLocation(program: u32, name: *u8) -> i32;
-    fn glGetProgramiv(program: u32, pname: u32, params: *i32) -> ();
-    fn glGetProgramInfoLog(program: u32, bufSize: i32, length: *i32, infoLog: *u8) -> ();
-    fn glGetShaderiv(shader: u32, pname: u32, params: *i32) -> ();
-    fn glGetShaderInfoLog(shader: u32, bufSize: i32, length: *i32, infoLog: *u8) -> ();
-    fn glGetShaderSource(shader: u32, bufSize: i32, length: *i32, source: *u8) -> ();
-    fn glGetUniformLocation(program: u32, name: *u8) -> i32;
-    fn glGetUniformfv(program: u32, location: i32, params: *f32) -> ();
-    fn glGetUniformiv(program: u32, location: i32, params: *i32) -> ();
-    fn glGetVertexAttribdv(index: u32, pname: u32, params: *f64) -> ();
-    fn glGetVertexAttribfv(index: u32, pname: u32, params: *f32) -> ();
-    fn glGetVertexAttribiv(index: u32, pname: u32, params: *i32) -> ();
-    fn glGetVertexAttribPointerv(index: u32, pname: u32, pointer: **()) -> ();
-    fn glIsProgram(program: u32) -> u8;
-    fn glIsShader(shader: u32) -> u8;
-    fn glLinkProgram(program: u32) -> ();
-    fn glShaderSource(shader: u32, count: i32, string: **u8, length: *i32) -> ();
-    fn glUseProgram(program: u32) -> ();
-    fn glUniform1f(location: i32, v0: f32) -> ();
-    fn glUniform2f(location: i32, v0: f32, v1: f32) -> ();
-    fn glUniform3f(location: i32, v0: f32, v1: f32, v2: f32) -> ();
-    fn glUniform4f(location: i32, v0: f32, v1: f32, v2: f32, v3: f32) -> ();
-    fn glUniform1i(location: i32, v0: i32) -> ();
-    fn glUniform2i(location: i32, v0: i32, v1: i32) -> ();
-    fn glUniform3i(location: i32, v0: i32, v1: i32, v2: i32) -> ();
-    fn glUniform4i(location: i32, v0: i32, v1: i32, v2: i32, v3: i32) -> ();
-    fn glUniform1fv(location: i32, count: i32, value: *f32) -> ();
-    fn glUniform2fv(location: i32, count: i32, value: *f32) -> ();
-    fn glUniform3fv(location: i32, count: i32, value: *f32) -> ();
-    fn glUniform4fv(location: i32, count: i32, value: *f32) -> ();
-    fn glUniform1iv(location: i32, count: i32, value: *i32) -> ();
-    fn glUniform2iv(location: i32, count: i32, value: *i32) -> ();
-    fn glUniform3iv(location: i32, count: i32, value: *i32) -> ();
-    fn glUniform4iv(location: i32, count: i32, value: *i32) -> ();
-    fn glUniformMatrix2fv(location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glUniformMatrix3fv(location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glUniformMatrix4fv(location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glValidateProgram(program: u32) -> ();
-    fn glVertexAttrib1d(index: u32, x: f64) -> ();
-    fn glVertexAttrib1dv(index: u32, v: *f64) -> ();
-    fn glVertexAttrib1f(index: u32, x: f32) -> ();
-    fn glVertexAttrib1fv(index: u32, v: *f32) -> ();
-    fn glVertexAttrib1s(index: u32, x: i16) -> ();
-    fn glVertexAttrib1sv(index: u32, v: *i16) -> ();
-    fn glVertexAttrib2d(index: u32, x: f64, y: f64) -> ();
-    fn glVertexAttrib2dv(index: u32, v: *f64) -> ();
-    fn glVertexAttrib2f(index: u32, x: f32, y: f32) -> ();
-    fn glVertexAttrib2fv(index: u32, v: *f32) -> ();
-    fn glVertexAttrib2s(index: u32, x: i16, y: i16) -> ();
-    fn glVertexAttrib2sv(index: u32, v: *i16) -> ();
-    fn glVertexAttrib3d(index: u32, x: f64, y: f64, z: f64) -> ();
-    fn glVertexAttrib3dv(index: u32, v: *f64) -> ();
-    fn glVertexAttrib3f(index: u32, x: f32, y: f32, z: f32) -> ();
-    fn glVertexAttrib3fv(index: u32, v: *f32) -> ();
-    fn glVertexAttrib3s(index: u32, x: i16, y: i16, z: i16) -> ();
-    fn glVertexAttrib3sv(index: u32, v: *i16) -> ();
-    fn glVertexAttrib4Nbv(index: u32, v: *i8) -> ();
-    fn glVertexAttrib4Niv(index: u32, v: *i32) -> ();
-    fn glVertexAttrib4Nsv(index: u32, v: *i16) -> ();
-    fn glVertexAttrib4Nub(index: u32, x: u8, y: u8, z: u8, w: u8) -> ();
-    fn glVertexAttrib4Nubv(index: u32, v: *u8) -> ();
-    fn glVertexAttrib4Nuiv(index: u32, v: *u32) -> ();
-    fn glVertexAttrib4Nusv(index: u32, v: *u16) -> ();
-    fn glVertexAttrib4bv(index: u32, v: *i8) -> ();
-    fn glVertexAttrib4d(index: u32, x: f64, y: f64, z: f64, w: f64) -> ();
-    fn glVertexAttrib4dv(index: u32, v: *f64) -> ();
-    fn glVertexAttrib4f(index: u32, x: f32, y: f32, z: f32, w: f32) -> ();
-    fn glVertexAttrib4fv(index: u32, v: *f32) -> ();
-    fn glVertexAttrib4iv(index: u32, v: *i32) -> ();
-    fn glVertexAttrib4s(index: u32, x: i16, y: i16, z: i16, w: i16) -> ();
-    fn glVertexAttrib4sv(index: u32, v: *i16) -> ();
-    fn glVertexAttrib4ubv(index: u32, v: *u8) -> ();
-    fn glVertexAttrib4uiv(index: u32, v: *u32) -> ();
-    fn glVertexAttrib4usv(index: u32, v: *u16) -> ();
-    fn glVertexAttribPointer(index: u32, size: i32, type_: u32, normalized: u8, stride: i32, pointer: * u8) -> ();
-    fn glUniformMatrix2x3fv(location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glUniformMatrix3x2fv(location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glUniformMatrix2x4fv(location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glUniformMatrix4x2fv(location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glUniformMatrix3x4fv(location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glUniformMatrix4x3fv(location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glColorMaski(index: u32, r: u8, g: u8, b: u8, a: u8) -> ();
-    fn glGetBooleani_v(target: u32, index: u32, data: *u8) -> ();
-    fn glGetIntegeri_v(target: u32, index: u32, data: *i32) -> ();
-    fn glEnablei(target: u32, index: u32) -> ();
-    fn glDisablei(target: u32, index: u32) -> ();
-    fn glIsEnabledi(target: u32, index: u32) -> u8;
-    fn glBindBufferRange(target: u32, index: u32, buffer: u32, offset: libc::intptr_t, size: libc::ptrdiff_t) -> ();
-    fn glBindBufferBase(target: u32, index: u32, buffer: u32) -> ();
-    fn glTransformFeedbackVaryings(program: u32, count: i32, varyings: **u8, bufferMode: u32) -> ();
-    fn glGetTransformFeedbackVarying(program: u32, index: u32, bufSize: i32, length: *i32, size: *i32, type_: *u32, name: *u8) -> ();
-    fn glClampColor(target: u32, clamp: u32) -> ();
-    fn glBeginConditionalRender(id: u32, mode: u32) -> ();
-    fn glEndConditionalRender() -> ();
-    fn glVertexAttribIPointer(index: u32, size: i32, type_: u32, stride: i32, pointer: * u8) -> ();
-    fn glGetVertexAttribIiv(index: u32, pname: u32, params: *i32) -> ();
-    fn glGetVertexAttribIuiv(index: u32, pname: u32, params: *u32) -> ();
-    fn glVertexAttribI1i(index: u32, x: i32) -> ();
-    fn glVertexAttribI2i(index: u32, x: i32, y: i32) -> ();
-    fn glVertexAttribI3i(index: u32, x: i32, y: i32, z: i32) -> ();
-    fn glVertexAttribI4i(index: u32, x: i32, y: i32, z: i32, w: i32) -> ();
-    fn glVertexAttribI1ui(index: u32, x: u32) -> ();
-    fn glVertexAttribI2ui(index: u32, x: u32, y: u32) -> ();
-    fn glVertexAttribI3ui(index: u32, x: u32, y: u32, z: u32) -> ();
-    fn glVertexAttribI4ui(index: u32, x: u32, y: u32, z: u32, w: u32) -> ();
-    fn glVertexAttribI1iv(index: u32, v: *i32) -> ();
-    fn glVertexAttribI2iv(index: u32, v: *i32) -> ();
-    fn glVertexAttribI3iv(index: u32, v: *i32) -> ();
-    fn glVertexAttribI4iv(index: u32, v: *i32) -> ();
-    fn glVertexAttribI1uiv(index: u32, v: *u32) -> ();
-    fn glVertexAttribI2uiv(index: u32, v: *u32) -> ();
-    fn glVertexAttribI3uiv(index: u32, v: *u32) -> ();
-    fn glVertexAttribI4uiv(index: u32, v: *u32) -> ();
-    fn glVertexAttribI4bv(index: u32, v: *i8) -> ();
-    fn glVertexAttribI4sv(index: u32, v: *i16) -> ();
-    fn glVertexAttribI4ubv(index: u32, v: *u8) -> ();
-    fn glVertexAttribI4usv(index: u32, v: *u16) -> ();
-    fn glGetUniformuiv(program: u32, location: i32, params: *u32) -> ();
-    fn glBindFragDataLocation(program: u32, color: u32, name: *u8) -> ();
-    fn glGetFragDataLocation(program: u32, name: *u8) -> i32;
-    fn glUniform1ui(location: i32, v0: u32) -> ();
-    fn glUniform2ui(location: i32, v0: u32, v1: u32) -> ();
-    fn glUniform3ui(location: i32, v0: u32, v1: u32, v2: u32) -> ();
-    fn glUniform4ui(location: i32, v0: u32, v1: u32, v2: u32, v3: u32) -> ();
-    fn glUniform1uiv(location: i32, count: i32, value: *u32) -> ();
-    fn glUniform2uiv(location: i32, count: i32, value: *u32) -> ();
-    fn glUniform3uiv(location: i32, count: i32, value: *u32) -> ();
-    fn glUniform4uiv(location: i32, count: i32, value: *u32) -> ();
-    fn glTexParameterIiv(target: u32, pname: u32, params: *i32) -> ();
-    fn glTexParameterIuiv(target: u32, pname: u32, params: *u32) -> ();
-    fn glGetTexParameterIiv(target: u32, pname: u32, params: *i32) -> ();
-    fn glGetTexParameterIuiv(target: u32, pname: u32, params: *u32) -> ();
-    fn glClearBufferiv(buffer: u32, drawbuffer: i32, value: *i32) -> ();
-    fn glClearBufferuiv(buffer: u32, drawbuffer: i32, value: *u32) -> ();
-    fn glClearBufferfv(buffer: u32, drawbuffer: i32, value: *f32) -> ();
-    fn glClearBufferfi(buffer: u32, drawbuffer: i32, depth: f32, stencil: i32) -> ();
-    fn glGetStringi(name: u32, index: u32) -> *u8;
-    fn glDrawArraysInstanced(mode: u32, first: i32, count: i32, primcount: i32) -> ();
-    fn glDrawElementsInstanced(mode: u32, count: i32, type_: u32, indices: * u8, primcount: i32) -> ();
-    fn glTexBuffer(target: u32, internalformat: u32, buffer: u32) -> ();
-    fn glPrimitiveRestartIndex(index: u32) -> ();
-    fn glGetInteger64i_v(target: u32, index: u32, data: *i64) -> ();
-    fn glGetBufferParameteri64v(target: u32, pname: u32, params: *i64) -> ();
-    fn glFramebufferTexture(target: u32, attachment: u32, texture: u32, level: i32) -> ();
-    fn glVertexAttribDivisor(index: u32, divisor: u32) -> ();
-    fn glMinSampleShading(value: f32) -> ();
-    fn glBlendEquationi(buf: u32, mode: u32) -> ();
-    fn glBlendEquationSeparatei(buf: u32, modeRGB: u32, modeAlpha: u32) -> ();
-    fn glBlendFunci(buf: u32, src: u32, dst: u32) -> ();
-    fn glBlendFuncSeparatei(buf: u32, srcRGB: u32, dstRGB: u32, srcAlpha: u32, dstAlpha: u32) -> ();
-    fn glIsRenderbuffer(renderbuffer: u32) -> u8;
-    fn glBindRenderbuffer(target: u32, renderbuffer: u32) -> ();
-    fn glDeleteRenderbuffers(n: i32, renderbuffers: *u32) -> ();
-    fn glGenRenderbuffers(n: i32, renderbuffers: *u32) -> ();
-    fn glRenderbufferStorage(target: u32, internalformat: u32, width: i32, height: i32) -> ();
-    fn glGetRenderbufferParameteriv(target: u32, pname: u32, params: *i32) -> ();
-    fn glIsFramebuffer(framebuffer: u32) -> u8;
-    fn glBindFramebuffer(target: u32, framebuffer: u32) -> ();
-    fn glDeleteFramebuffers(n: i32, framebuffers: *u32) -> ();
-    fn glGenFramebuffers(n: i32, framebuffers: *u32) -> ();
-    fn glCheckFramebufferStatus(target: u32) -> u32;
-    fn glFramebufferTexture1D(target: u32, attachment: u32, textarget: u32, texture: u32, level: i32) -> ();
-    fn glFramebufferTexture2D(target: u32, attachment: u32, textarget: u32, texture: u32, level: i32) -> ();
-    fn glFramebufferTexture3D(target: u32, attachment: u32, textarget: u32, texture: u32, level: i32, zoffset: i32) -> ();
-    fn glFramebufferRenderbuffer(target: u32, attachment: u32, renderbuffertarget: u32, renderbuffer: u32) -> ();
-    fn glGetFramebufferAttachmentParameteriv(target: u32, attachment: u32, pname: u32, params: *i32) -> ();
-    fn glGenerateMipmap(target: u32) -> ();
-    fn glBlitFramebuffer(srcX0: i32, srcY0: i32, srcX1: i32, srcY1: i32, dstX0: i32, dstY0: i32, dstX1: i32, dstY1: i32, mask: u32, filter: u32) -> ();
-    fn glRenderbufferStorageMultisample(target: u32, samples: i32, internalformat: u32, width: i32, height: i32) -> ();
-    fn glFramebufferTextureLayer(target: u32, attachment: u32, texture: u32, level: i32, layer: i32) -> ();
-    fn glMapBufferRange(target: u32, offset: libc::intptr_t, length: libc::ptrdiff_t, access: u32) -> *();
-    fn glFlushMappedBufferRange(target: u32, offset: libc::intptr_t, length: libc::ptrdiff_t) -> ();
-    fn glBindVertexArray(array: u32) -> ();
-    fn glDeleteVertexArrays(n: i32, arrays: *u32) -> ();
-    fn glGenVertexArrays(n: i32, arrays: *u32) -> ();
-    fn glIsVertexArray(array: u32) -> u8;
-    fn glGetUniformIndices(program: u32, uniformCount: i32, uniformNames: **u8, uniformIndices: *u32) -> ();
-    fn glGetActiveUniformsiv(program: u32, uniformCount: i32, uniformIndices: *u32, pname: u32, params: *i32) -> ();
-    fn glGetActiveUniformName(program: u32, uniformIndex: u32, bufSize: i32, length: *i32, uniformName: *u8) -> ();
-    fn glGetUniformBlockIndex(program: u32, uniformBlockName: *u8) -> u32;
-    fn glGetActiveUniformBlockiv(program: u32, uniformBlockIndex: u32, pname: u32, params: *i32) -> ();
-    fn glGetActiveUniformBlockName(program: u32, uniformBlockIndex: u32, bufSize: i32, length: *i32, uniformBlockName: *u8) -> ();
-    fn glUniformBlockBinding(program: u32, uniformBlockIndex: u32, uniformBlockBinding: u32) -> ();
-    fn glCopyBufferSubData(readTarget: u32, writeTarget: u32, readOffset: libc::intptr_t, writeOffset: libc::intptr_t, size: libc::ptrdiff_t) -> ();
-    fn glDrawElementsBaseVertex(mode: u32, count: i32, type_: u32, indices: * u8, basevertex: i32) -> ();
-    fn glDrawRangeElementsBaseVertex(mode: u32, start: u32, end: u32, count: i32, type_: u32, indices: * u8, basevertex: i32) -> ();
-    fn glDrawElementsInstancedBaseVertex(mode: u32, count: i32, type_: u32, indices: * u8, primcount: i32, basevertex: i32) -> ();
-    fn glMultiDrawElementsBaseVertex(mode: u32, count: *i32, type_: u32, indices: **(), primcount: i32, basevertex: *i32) -> ();
-    fn glProvokingVertex(mode: u32) -> ();
-    fn glIsSync() -> u8;
-    fn glDeleteSync() -> ();
-    fn glClientWaitSync(flags: u32, timeout: u64) -> u32;
-    fn glWaitSync(flags: u32, timeout: u64) -> ();
-    fn glGetInteger64v(pname: u32, params: *i64) -> ();
-    fn glGetSynciv(pname: u32, bufSize: i32, length: *i32, values: *i32) -> ();
-    fn glTexImage2DMultisample(target: u32, samples: i32, internalformat: i32, width: i32, height: i32, fixedsamplelocations: u8) -> ();
-    fn glTexImage3DMultisample(target: u32, samples: i32, internalformat: i32, width: i32, height: i32, depth: i32, fixedsamplelocations: u8) -> ();
-    fn glGetMultisamplefv(pname: u32, index: u32, val: *f32) -> ();
-    fn glSampleMaski(index: u32, mask: u32) -> ();
-    fn glBindFragDataLocationIndexed(program: u32, colorNumber: u32, index: u32, name: *u8) -> ();
-    fn glGetFragDataIndex(program: u32, name: *u8) -> i32;
-    fn glGenSamplers(count: i32, samplers: *u32) -> ();
-    fn glDeleteSamplers(count: i32, samplers: *u32) -> ();
-    fn glIsSampler(sampler: u32) -> u8;
-    fn glBindSampler(unit: u32, sampler: u32) -> ();
-    fn glSamplerParameteri(sampler: u32, pname: u32, param: i32) -> ();
-    fn glSamplerParameteriv(sampler: u32, pname: u32, param: *i32) -> ();
-    fn glSamplerParameterf(sampler: u32, pname: u32, param: f32) -> ();
-    fn glSamplerParameterfv(sampler: u32, pname: u32, param: *f32) -> ();
-    fn glSamplerParameterIiv(sampler: u32, pname: u32, param: *i32) -> ();
-    fn glSamplerParameterIuiv(sampler: u32, pname: u32, param: *u32) -> ();
-    fn glGetSamplerParameteriv(sampler: u32, pname: u32, params: *i32) -> ();
-    fn glGetSamplerParameterIiv(sampler: u32, pname: u32, params: *i32) -> ();
-    fn glGetSamplerParameterfv(sampler: u32, pname: u32, params: *f32) -> ();
-    fn glGetSamplerParameterIuiv(sampler: u32, pname: u32, params: *u32) -> ();
-    fn glQueryCounter(id: u32, target: u32) -> ();
-    fn glGetQueryObjecti64v(id: u32, pname: u32, params: *i64) -> ();
-    fn glGetQueryObjectui64v(id: u32, pname: u32, params: *u64) -> ();
-    fn glVertexP2ui(type_: u32, value: u32) -> ();
-    fn glVertexP2uiv(type_: u32, value: *u32) -> ();
-    fn glVertexP3ui(type_: u32, value: u32) -> ();
-    fn glVertexP3uiv(type_: u32, value: *u32) -> ();
-    fn glVertexP4ui(type_: u32, value: u32) -> ();
-    fn glVertexP4uiv(type_: u32, value: *u32) -> ();
-    fn glTexCoordP1ui(type_: u32, coords: u32) -> ();
-    fn glTexCoordP1uiv(type_: u32, coords: *u32) -> ();
-    fn glTexCoordP2ui(type_: u32, coords: u32) -> ();
-    fn glTexCoordP2uiv(type_: u32, coords: *u32) -> ();
-    fn glTexCoordP3ui(type_: u32, coords: u32) -> ();
-    fn glTexCoordP3uiv(type_: u32, coords: *u32) -> ();
-    fn glTexCoordP4ui(type_: u32, coords: u32) -> ();
-    fn glTexCoordP4uiv(type_: u32, coords: *u32) -> ();
-    fn glMultiTexCoordP1ui(texture: u32, type_: u32, coords: u32) -> ();
-    fn glMultiTexCoordP1uiv(texture: u32, type_: u32, coords: *u32) -> ();
-    fn glMultiTexCoordP2ui(texture: u32, type_: u32, coords: u32) -> ();
-    fn glMultiTexCoordP2uiv(texture: u32, type_: u32, coords: *u32) -> ();
-    fn glMultiTexCoordP3ui(texture: u32, type_: u32, coords: u32) -> ();
-    fn glMultiTexCoordP3uiv(texture: u32, type_: u32, coords: *u32) -> ();
-    fn glMultiTexCoordP4ui(texture: u32, type_: u32, coords: u32) -> ();
-    fn glMultiTexCoordP4uiv(texture: u32, type_: u32, coords: *u32) -> ();
-    fn glNormalP3ui(type_: u32, coords: u32) -> ();
-    fn glNormalP3uiv(type_: u32, coords: *u32) -> ();
-    fn glColorP3ui(type_: u32, color: u32) -> ();
-    fn glColorP3uiv(type_: u32, color: *u32) -> ();
-    fn glColorP4ui(type_: u32, color: u32) -> ();
-    fn glColorP4uiv(type_: u32, color: *u32) -> ();
-    fn glSecondaryColorP3ui(type_: u32, color: u32) -> ();
-    fn glSecondaryColorP3uiv(type_: u32, color: *u32) -> ();
-    fn glVertexAttribP1ui(index: u32, type_: u32, normalized: u8, value: u32) -> ();
-    fn glVertexAttribP1uiv(index: u32, type_: u32, normalized: u8, value: *u32) -> ();
-    fn glVertexAttribP2ui(index: u32, type_: u32, normalized: u8, value: u32) -> ();
-    fn glVertexAttribP2uiv(index: u32, type_: u32, normalized: u8, value: *u32) -> ();
-    fn glVertexAttribP3ui(index: u32, type_: u32, normalized: u8, value: u32) -> ();
-    fn glVertexAttribP3uiv(index: u32, type_: u32, normalized: u8, value: *u32) -> ();
-    fn glVertexAttribP4ui(index: u32, type_: u32, normalized: u8, value: u32) -> ();
-    fn glVertexAttribP4uiv(index: u32, type_: u32, normalized: u8, value: *u32) -> ();
-    fn glDrawArraysIndirect(mode: u32, indirect: * u8) -> ();
-    fn glDrawElementsIndirect(mode: u32, type_: u32, indirect: * u8) -> ();
-    fn glUniform1d(location: i32, x: f64) -> ();
-    fn glUniform2d(location: i32, x: f64, y: f64) -> ();
-    fn glUniform3d(location: i32, x: f64, y: f64, z: f64) -> ();
-    fn glUniform4d(location: i32, x: f64, y: f64, z: f64, w: f64) -> ();
-    fn glUniform1dv(location: i32, count: i32, value: *f64) -> ();
-    fn glUniform2dv(location: i32, count: i32, value: *f64) -> ();
-    fn glUniform3dv(location: i32, count: i32, value: *f64) -> ();
-    fn glUniform4dv(location: i32, count: i32, value: *f64) -> ();
-    fn glUniformMatrix2dv(location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glUniformMatrix3dv(location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glUniformMatrix4dv(location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glUniformMatrix2x3dv(location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glUniformMatrix2x4dv(location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glUniformMatrix3x2dv(location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glUniformMatrix3x4dv(location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glUniformMatrix4x2dv(location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glUniformMatrix4x3dv(location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glGetUniformdv(program: u32, location: i32, params: *f64) -> ();
-    fn glGetSubroutineUniformLocation(program: u32, shadertype: u32, name: *u8) -> i32;
-    fn glGetSubroutineIndex(program: u32, shadertype: u32, name: *u8) -> u32;
-    fn glGetActiveSubroutineUniformiv(program: u32, shadertype: u32, index: u32, pname: u32, values: *i32) -> ();
-    fn glGetActiveSubroutineUniformName(program: u32, shadertype: u32, index: u32, bufsize: i32, length: *i32, name: *u8) -> ();
-    fn glGetActiveSubroutineName(program: u32, shadertype: u32, index: u32, bufsize: i32, length: *i32, name: *u8) -> ();
-    fn glUniformSubroutinesuiv(shadertype: u32, count: i32, indices: *u32) -> ();
-    fn glGetUniformSubroutineuiv(shadertype: u32, location: i32, params: *u32) -> ();
-    fn glGetProgramStageiv(program: u32, shadertype: u32, pname: u32, values: *i32) -> ();
-    fn glPatchParameteri(pname: u32, value: i32) -> ();
-    fn glPatchParameterfv(pname: u32, values: *f32) -> ();
-    fn glDeleteTransformFeedbacks(n: i32, ids: *u32) -> ();
-    fn glGenTransformFeedbacks(n: i32, ids: *u32) -> ();
-    fn glDrawTransformFeedbackStream(mode: u32, id: u32, stream: u32) -> ();
-    fn glBeginQueryIndexed(target: u32, index: u32, id: u32) -> ();
-    fn glEndQueryIndexed(target: u32, index: u32) -> ();
-    fn glGetQueryIndexediv(target: u32, index: u32, pname: u32, params: *i32) -> ();
-    fn glReleaseShaderCompiler() -> ();
-    fn glShaderBinary(count: i32, shaders: *u32, binaryformat: u32, binary: * u8, length: i32) -> ();
-    fn glGetShaderPrecisionFormat(shadertype: u32, precisiontype: u32, range: *i32, precision: *i32) -> ();
-    fn glDepthRangef(n: f32, f: f32) -> ();
-    fn glClearDepthf(d: f32) -> ();
-    fn glGetProgramBinary(program: u32, bufSize: i32, length: *i32, binaryFormat: *u32, binary: * u8) -> ();
-    fn glProgramBinary(program: u32, binaryFormat: u32, binary: * u8, length: i32) -> ();
-    fn glProgramParameteri(program: u32, pname: u32, value: i32) -> ();
-    fn glUseProgramStages(pipeline: u32, stages: u32, program: u32) -> ();
-    fn glActiveShaderProgram(pipeline: u32, program: u32) -> ();
-    fn glCreateShaderProgramv(type_: u32, count: i32, strings: **u8) -> u32;
-    fn glBindProgramPipeline(pipeline: u32) -> ();
-    fn glDeleteProgramPipelines(n: i32, pipelines: *u32) -> ();
-    fn glGenProgramPipelines(n: i32, pipelines: *u32) -> ();
-    fn glIsProgramPipeline(pipeline: u32) -> u8;
-    fn glGetProgramPipelineiv(pipeline: u32, pname: u32, params: *i32) -> ();
-    fn glProgramUniform1i(program: u32, location: i32, v0: i32) -> ();
-    fn glProgramUniform1iv(program: u32, location: i32, count: i32, value: *i32) -> ();
-    fn glProgramUniform1f(program: u32, location: i32, v0: f32) -> ();
-    fn glProgramUniform1fv(program: u32, location: i32, count: i32, value: *f32) -> ();
-    fn glProgramUniform1d(program: u32, location: i32, v0: f64) -> ();
-    fn glProgramUniform1dv(program: u32, location: i32, count: i32, value: *f64) -> ();
-    fn glProgramUniform1ui(program: u32, location: i32, v0: u32) -> ();
-    fn glProgramUniform1uiv(program: u32, location: i32, count: i32, value: *u32) -> ();
-    fn glProgramUniform2i(program: u32, location: i32, v0: i32, v1: i32) -> ();
-    fn glProgramUniform2iv(program: u32, location: i32, count: i32, value: *i32) -> ();
-    fn glProgramUniform2f(program: u32, location: i32, v0: f32, v1: f32) -> ();
-    fn glProgramUniform2fv(program: u32, location: i32, count: i32, value: *f32) -> ();
-    fn glProgramUniform2d(program: u32, location: i32, v0: f64, v1: f64) -> ();
-    fn glProgramUniform2dv(program: u32, location: i32, count: i32, value: *f64) -> ();
-    fn glProgramUniform2ui(program: u32, location: i32, v0: u32, v1: u32) -> ();
-    fn glProgramUniform2uiv(program: u32, location: i32, count: i32, value: *u32) -> ();
-    fn glProgramUniform3i(program: u32, location: i32, v0: i32, v1: i32, v2: i32) -> ();
-    fn glProgramUniform3iv(program: u32, location: i32, count: i32, value: *i32) -> ();
-    fn glProgramUniform3f(program: u32, location: i32, v0: f32, v1: f32, v2: f32) -> ();
-    fn glProgramUniform3fv(program: u32, location: i32, count: i32, value: *f32) -> ();
-    fn glProgramUniform3d(program: u32, location: i32, v0: f64, v1: f64, v2: f64) -> ();
-    fn glProgramUniform3dv(program: u32, location: i32, count: i32, value: *f64) -> ();
-    fn glProgramUniform3ui(program: u32, location: i32, v0: u32, v1: u32, v2: u32) -> ();
-    fn glProgramUniform3uiv(program: u32, location: i32, count: i32, value: *u32) -> ();
-    fn glProgramUniform4i(program: u32, location: i32, v0: i32, v1: i32, v2: i32, v3: i32) -> ();
-    fn glProgramUniform4iv(program: u32, location: i32, count: i32, value: *i32) -> ();
-    fn glProgramUniform4f(program: u32, location: i32, v0: f32, v1: f32, v2: f32, v3: f32) -> ();
-    fn glProgramUniform4fv(program: u32, location: i32, count: i32, value: *f32) -> ();
-    fn glProgramUniform4d(program: u32, location: i32, v0: f64, v1: f64, v2: f64, v3: f64) -> ();
-    fn glProgramUniform4dv(program: u32, location: i32, count: i32, value: *f64) -> ();
-    fn glProgramUniform4ui(program: u32, location: i32, v0: u32, v1: u32, v2: u32, v3: u32) -> ();
-    fn glProgramUniform4uiv(program: u32, location: i32, count: i32, value: *u32) -> ();
-    fn glProgramUniformMatrix2fv(program: u32, location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glProgramUniformMatrix3fv(program: u32, location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glProgramUniformMatrix4fv(program: u32, location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glProgramUniformMatrix2dv(program: u32, location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glProgramUniformMatrix3dv(program: u32, location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glProgramUniformMatrix4dv(program: u32, location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glProgramUniformMatrix2x3fv(program: u32, location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glProgramUniformMatrix3x2fv(program: u32, location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glProgramUniformMatrix2x4fv(program: u32, location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glProgramUniformMatrix4x2fv(program: u32, location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glProgramUniformMatrix3x4fv(program: u32, location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glProgramUniformMatrix4x3fv(program: u32, location: i32, count: i32, transpose: u8, value: *f32) -> ();
-    fn glProgramUniformMatrix2x3dv(program: u32, location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glProgramUniformMatrix3x2dv(program: u32, location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glProgramUniformMatrix2x4dv(program: u32, location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glProgramUniformMatrix4x2dv(program: u32, location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glProgramUniformMatrix3x4dv(program: u32, location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glProgramUniformMatrix4x3dv(program: u32, location: i32, count: i32, transpose: u8, value: *f64) -> ();
-    fn glValidateProgramPipeline(pipeline: u32) -> ();
-    fn glGetProgramPipelineInfoLog(pipeline: u32, bufSize: i32, length: *i32, infoLog: *u8) -> ();
-    fn glVertexAttribL1d(index: u32, x: f64) -> ();
-    fn glVertexAttribL2d(index: u32, x: f64, y: f64) -> ();
-    fn glVertexAttribL3d(index: u32, x: f64, y: f64, z: f64) -> ();
-    fn glVertexAttribL4d(index: u32, x: f64, y: f64, z: f64, w: f64) -> ();
-    fn glVertexAttribL1dv(index: u32, v: *f64) -> ();
-    fn glVertexAttribL2dv(index: u32, v: *f64) -> ();
-    fn glVertexAttribL3dv(index: u32, v: *f64) -> ();
-    fn glVertexAttribL4dv(index: u32, v: *f64) -> ();
-    fn glVertexAttribLPointer(index: u32, size: i32, type_: u32, stride: i32, pointer: * u8) -> ();
-    fn glGetVertexAttribLdv(index: u32, pname: u32, params: *f64) -> ();
-    fn glViewportArrayv(first: u32, count: i32, v: *f32) -> ();
-    fn glViewportIndexedf(index: u32, x: f32, y: f32, w: f32, h: f32) -> ();
-    fn glViewportIndexedfv(index: u32, v: *f32) -> ();
-    fn glScissorArrayv(first: u32, count: i32, v: *i32) -> ();
-    fn glScissorIndexed(index: u32, left: i32, bottom: i32, width: i32, height: i32) -> ();
-    fn glScissorIndexedv(index: u32, v: *i32) -> ();
-    fn glDepthRangeArrayv(first: u32, count: i32, v: *f64) -> ();
-    fn glDepthRangeIndexed(index: u32, n: f64, f: f64) -> ();
-    fn glGetFloati_v(target: u32, index: u32, data: *f32) -> ();
-    fn glGetDoublei_v(target: u32, index: u32, data: *f64) -> ();
-    fn glDrawArraysInstancedBaseInstance(mode: u32, first: i32, count: i32, primcount: i32, baseinstance: u32) -> ();
-    fn glDrawElementsInstancedBaseInstance(mode: u32, count: i32, type_: u32, indices: * u8, primcount: i32, baseinstance: u32) -> ();
-    fn glDrawElementsInstancedBaseVertexBaseInstance(mode: u32, count: i32, type_: u32, indices: * u8, primcount: i32, basevertex: i32, baseinstance: u32) -> ();
-    fn glDrawTransformFeedbackInstanced(mode: u32, id: u32, primcount: i32) -> ();
-    fn glDrawTransformFeedbackStreamInstanced(mode: u32, id: u32, stream: u32, primcount: i32) -> ();
-    fn glGetInternalformativ(target: u32, internalformat: u32, pname: u32, bufSize: i32, params: *i32) -> ();
-    fn glGetActiveAtomicCounterBufferiv(program: u32, bufferIndex: u32, pname: u32, params: *i32) -> ();
-    fn glBindImageTexture(unit: u32, texture: u32, level: i32, layered: u8, layer: i32, access: u32, format: u32) -> ();
-    fn glMemoryBarrier(barriers: u32) -> ();
-    fn glTexStorage1D(target: u32, levels: i32, internalformat: u32, width: i32) -> ();
-    fn glTexStorage2D(target: u32, levels: i32, internalformat: u32, width: i32, height: i32) -> ();
-    fn glTexStorage3D(target: u32, levels: i32, internalformat: u32, width: i32, height: i32, depth: i32) -> ();
-}
-fn glClearColor(red: float, green: float, blue: float, alpha: float) -> () unsafe {
-    ret GL::glClearColor(red as f32, green as f32, blue as f32, alpha as f32);
-}
-fn glClear(mask: uint) -> () unsafe {
-    ret GL::glClear(mask as u32);
-}
-fn glIndexMask(mask: uint) -> () unsafe {
-    ret GL::glIndexMask(mask as u32);
-}
-fn glColorMask(red: uint, green: uint, blue: uint, alpha: uint) -> () unsafe {
-    ret GL::glColorMask(red as u8, green as u8, blue as u8, alpha as u8);
-}
-fn glAlphaFunc(func: uint, ref: float) -> () unsafe {
-    ret GL::glAlphaFunc(func as u32, ref as f32);
-}
-fn glBlendFunc(sfactor: uint, dfactor: uint) -> () unsafe {
-    ret GL::glBlendFunc(sfactor as u32, dfactor as u32);
-}
-fn glLogicOp(opcode: uint) -> () unsafe {
-    ret GL::glLogicOp(opcode as u32);
-}
-fn glCullFace(mode: uint) -> () unsafe {
-    ret GL::glCullFace(mode as u32);
-}
-fn glFrontFace(mode: uint) -> () unsafe {
-    ret GL::glFrontFace(mode as u32);
-}
-fn glPointSize(size: float) -> () unsafe {
-    ret GL::glPointSize(size as f32);
-}
-fn glLineWidth(width: float) -> () unsafe {
-    ret GL::glLineWidth(width as f32);
-}
-fn glLineStipple(factor: int, pattern: uint) -> () unsafe {
-    ret GL::glLineStipple(factor as i32, pattern as u16);
-}
-fn glPolygonMode(face: uint, mode: uint) -> () unsafe {
-    ret GL::glPolygonMode(face as u32, mode as u32);
-}
-fn glPolygonOffset(factor: float, units: float) -> () unsafe {
-    ret GL::glPolygonOffset(factor as f32, units as f32);
-}
-fn glPolygonStipple(mask: str) -> () unsafe {
+    fn glClearColor(red: libc::c_float, green: libc::c_float, blue: libc::c_float, alpha: libc::c_float) -> libc::c_void;
+    fn glClear(mask: libc::c_uint) -> libc::c_void;
+    fn glIndexMask(mask: libc::c_uint) -> libc::c_void;
+    fn glColorMask(red: libc::c_uchar, green: libc::c_uchar, blue: libc::c_uchar, alpha: libc::c_uchar) -> libc::c_void;
+    fn glAlphaFunc(func: libc::c_uint, ref: libc::c_float) -> libc::c_void;
+    fn glBlendFunc(sfactor: libc::c_uint, dfactor: libc::c_uint) -> libc::c_void;
+    fn glLogicOp(opcode: libc::c_uint) -> libc::c_void;
+    fn glCullFace(mode: libc::c_uint) -> libc::c_void;
+    fn glFrontFace(mode: libc::c_uint) -> libc::c_void;
+    fn glPointSize(size: libc::c_float) -> libc::c_void;
+    fn glLineWidth(width: libc::c_float) -> libc::c_void;
+    fn glLineStipple(factor: libc::c_int, pattern: libc::c_ushort) -> libc::c_void;
+    fn glPolygonMode(face: libc::c_uint, mode: libc::c_uint) -> libc::c_void;
+    fn glPolygonOffset(factor: libc::c_float, units: libc::c_float) -> libc::c_void;
+    fn glPolygonStipple(mask: *libc::c_uchar) -> libc::c_void;
+    fn glGetPolygonStipple(mask: *libc::c_uchar) -> libc::c_void;
+    fn glEdgeFlag(flag: libc::c_uchar) -> libc::c_void;
+    fn glEdgeFlagv(flag: *libc::c_uchar) -> libc::c_void;
+    fn glScissor(x: libc::c_int, y: libc::c_int, width: libc::c_int, height: libc::c_int) -> libc::c_void;
+    fn glClipPlane(plane: libc::c_uint, equation: *libc::c_double) -> libc::c_void;
+    fn glGetClipPlane(plane: libc::c_uint, equation: *libc::c_double) -> libc::c_void;
+    fn glDrawBuffer(mode: libc::c_uint) -> libc::c_void;
+    fn glReadBuffer(mode: libc::c_uint) -> libc::c_void;
+    fn glEnable(cap: libc::c_uint) -> libc::c_void;
+    fn glDisable(cap: libc::c_uint) -> libc::c_void;
+    fn glIsEnabled(cap: libc::c_uint) -> libc::c_uchar;
+    fn glEnableClientState(cap: libc::c_uint) -> libc::c_void;
+    fn glGetDoublev(pname: libc::c_uint, params: *libc::c_double) -> libc::c_void;
+    fn glGetFloatv(pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glGetIntegerv(pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glPushAttrib(mask: libc::c_uint) -> libc::c_void;
+    fn glPopAttrib() -> libc::c_void;
+    fn glPushClientAttrib(mask: libc::c_uint) -> libc::c_void;
+    fn glGetError() -> libc::c_uint;
+    fn glGetString(name: libc::c_uint) -> *libc::c_uchar;
+    fn glFinish() -> libc::c_void;
+    fn glFlush() -> libc::c_void;
+    fn glHint(target: libc::c_uint, mode: libc::c_uint) -> libc::c_void;
+    fn glClearDepth(depth: libc::c_double) -> libc::c_void;
+    fn glDepthFunc(func: libc::c_uint) -> libc::c_void;
+    fn glDepthMask(flag: libc::c_uchar) -> libc::c_void;
+    fn glDepthRange(near_val: libc::c_double, far_val: libc::c_double) -> libc::c_void;
+    fn glClearAccum(red: libc::c_float, green: libc::c_float, blue: libc::c_float, alpha: libc::c_float) -> libc::c_void;
+    fn glAccum(op: libc::c_uint, value: libc::c_float) -> libc::c_void;
+    fn glMatrixMode(mode: libc::c_uint) -> libc::c_void;
+    fn glOrtho(left: libc::c_double, right: libc::c_double, bottom: libc::c_double, top: libc::c_double, near_val: libc::c_double, far_val: libc::c_double) -> libc::c_void;
+    fn glFrustum(left: libc::c_double, right: libc::c_double, bottom: libc::c_double, top: libc::c_double, near_val: libc::c_double, far_val: libc::c_double) -> libc::c_void;
+    fn glViewport(x: libc::c_int, y: libc::c_int, width: libc::c_int, height: libc::c_int) -> libc::c_void;
+    fn glPushMatrix() -> libc::c_void;
+    fn glPopMatrix() -> libc::c_void;
+    fn glLoadIdentity() -> libc::c_void;
+    fn glLoadMatrixd(m: *libc::c_double) -> libc::c_void;
+    fn glLoadMatrixf(m: *libc::c_float) -> libc::c_void;
+    fn glMultMatrixd(m: *libc::c_double) -> libc::c_void;
+    fn glMultMatrixf(m: *libc::c_float) -> libc::c_void;
+    fn glRotated(angle: libc::c_double, x: libc::c_double, y: libc::c_double, z: libc::c_double) -> libc::c_void;
+    fn glRotatef(angle: libc::c_float, x: libc::c_float, y: libc::c_float, z: libc::c_float) -> libc::c_void;
+    fn glScaled(x: libc::c_double, y: libc::c_double, z: libc::c_double) -> libc::c_void;
+    fn glScalef(x: libc::c_float, y: libc::c_float, z: libc::c_float) -> libc::c_void;
+    fn glTranslated(x: libc::c_double, y: libc::c_double, z: libc::c_double) -> libc::c_void;
+    fn glTranslatef(x: libc::c_float, y: libc::c_float, z: libc::c_float) -> libc::c_void;
+    fn glIsList(list: libc::c_uint) -> libc::c_uchar;
+    fn glDeleteLists(list: libc::c_uint, range: libc::c_int) -> libc::c_void;
+    fn glGenLists(range: libc::c_int) -> libc::c_uint;
+    fn glNewList(list: libc::c_uint, mode: libc::c_uint) -> libc::c_void;
+    fn glEndList() -> libc::c_void;
+    fn glCallList(list: libc::c_uint) -> libc::c_void;
+    fn glCallLists(n: libc::c_int, type_: libc::c_uint, lists: * libc::c_uchar) -> libc::c_void;
+    fn glListBase(base: libc::c_uint) -> libc::c_void;
+    fn glBegin(mode: libc::c_uint) -> libc::c_void;
+    fn glEnd() -> libc::c_void;
+    fn glVertex2d(x: libc::c_double, y: libc::c_double) -> libc::c_void;
+    fn glVertex2f(x: libc::c_float, y: libc::c_float) -> libc::c_void;
+    fn glVertex2i(x: libc::c_int, y: libc::c_int) -> libc::c_void;
+    fn glVertex2s(x: libc::c_short, y: libc::c_short) -> libc::c_void;
+    fn glVertex3d(x: libc::c_double, y: libc::c_double, z: libc::c_double) -> libc::c_void;
+    fn glVertex3f(x: libc::c_float, y: libc::c_float, z: libc::c_float) -> libc::c_void;
+    fn glVertex3i(x: libc::c_int, y: libc::c_int, z: libc::c_int) -> libc::c_void;
+    fn glVertex3s(x: libc::c_short, y: libc::c_short, z: libc::c_short) -> libc::c_void;
+    fn glVertex4d(x: libc::c_double, y: libc::c_double, z: libc::c_double, w: libc::c_double) -> libc::c_void;
+    fn glVertex4f(x: libc::c_float, y: libc::c_float, z: libc::c_float, w: libc::c_float) -> libc::c_void;
+    fn glVertex4i(x: libc::c_int, y: libc::c_int, z: libc::c_int, w: libc::c_int) -> libc::c_void;
+    fn glVertex4s(x: libc::c_short, y: libc::c_short, z: libc::c_short, w: libc::c_short) -> libc::c_void;
+    fn glVertex2dv(v: *libc::c_double) -> libc::c_void;
+    fn glVertex2fv(v: *libc::c_float) -> libc::c_void;
+    fn glVertex2iv(v: *libc::c_int) -> libc::c_void;
+    fn glVertex2sv(v: *libc::c_short) -> libc::c_void;
+    fn glVertex3dv(v: *libc::c_double) -> libc::c_void;
+    fn glVertex3fv(v: *libc::c_float) -> libc::c_void;
+    fn glVertex3iv(v: *libc::c_int) -> libc::c_void;
+    fn glVertex3sv(v: *libc::c_short) -> libc::c_void;
+    fn glVertex4dv(v: *libc::c_double) -> libc::c_void;
+    fn glVertex4fv(v: *libc::c_float) -> libc::c_void;
+    fn glVertex4iv(v: *libc::c_int) -> libc::c_void;
+    fn glVertex4sv(v: *libc::c_short) -> libc::c_void;
+    fn glNormal3b(nx: libc::c_char, ny: libc::c_char, nz: libc::c_char) -> libc::c_void;
+    fn glNormal3d(nx: libc::c_double, ny: libc::c_double, nz: libc::c_double) -> libc::c_void;
+    fn glNormal3f(nx: libc::c_float, ny: libc::c_float, nz: libc::c_float) -> libc::c_void;
+    fn glNormal3i(nx: libc::c_int, ny: libc::c_int, nz: libc::c_int) -> libc::c_void;
+    fn glNormal3s(nx: libc::c_short, ny: libc::c_short, nz: libc::c_short) -> libc::c_void;
+    fn glNormal3bv(v: *libc::c_char) -> libc::c_void;
+    fn glNormal3dv(v: *libc::c_double) -> libc::c_void;
+    fn glNormal3fv(v: *libc::c_float) -> libc::c_void;
+    fn glNormal3iv(v: *libc::c_int) -> libc::c_void;
+    fn glNormal3sv(v: *libc::c_short) -> libc::c_void;
+    fn glIndexd(c: libc::c_double) -> libc::c_void;
+    fn glIndexf(c: libc::c_float) -> libc::c_void;
+    fn glIndexi(c: libc::c_int) -> libc::c_void;
+    fn glIndexs(c: libc::c_short) -> libc::c_void;
+    fn glIndexub(c: libc::c_uchar) -> libc::c_void;
+    fn glIndexfv(c: *libc::c_float) -> libc::c_void;
+    fn glIndexiv(c: *libc::c_int) -> libc::c_void;
+    fn glIndexsv(c: *libc::c_short) -> libc::c_void;
+    fn glIndexubv(c: *libc::c_uchar) -> libc::c_void;
+    fn glColor3d(red: libc::c_double, green: libc::c_double, blue: libc::c_double) -> libc::c_void;
+    fn glColor3f(red: libc::c_float, green: libc::c_float, blue: libc::c_float) -> libc::c_void;
+    fn glColor3i(red: libc::c_int, green: libc::c_int, blue: libc::c_int) -> libc::c_void;
+    fn glColor3s(red: libc::c_short, green: libc::c_short, blue: libc::c_short) -> libc::c_void;
+    fn glColor3ub(red: libc::c_uchar, green: libc::c_uchar, blue: libc::c_uchar) -> libc::c_void;
+    fn glColor3ui(red: libc::c_uint, green: libc::c_uint, blue: libc::c_uint) -> libc::c_void;
+    fn glColor3us(red: libc::c_ushort, green: libc::c_ushort, blue: libc::c_ushort) -> libc::c_void;
+    fn glColor4b(red: libc::c_char, green: libc::c_char, blue: libc::c_char, alpha: libc::c_char) -> libc::c_void;
+    fn glColor4d(red: libc::c_double, green: libc::c_double, blue: libc::c_double, alpha: libc::c_double) -> libc::c_void;
+    fn glColor4f(red: libc::c_float, green: libc::c_float, blue: libc::c_float, alpha: libc::c_float) -> libc::c_void;
+    fn glColor4i(red: libc::c_int, green: libc::c_int, blue: libc::c_int, alpha: libc::c_int) -> libc::c_void;
+    fn glColor4s(red: libc::c_short, green: libc::c_short, blue: libc::c_short, alpha: libc::c_short) -> libc::c_void;
+    fn glColor4ub(red: libc::c_uchar, green: libc::c_uchar, blue: libc::c_uchar, alpha: libc::c_uchar) -> libc::c_void;
+    fn glColor4ui(red: libc::c_uint, green: libc::c_uint, blue: libc::c_uint, alpha: libc::c_uint) -> libc::c_void;
+    fn glColor4us(red: libc::c_ushort, green: libc::c_ushort, blue: libc::c_ushort, alpha: libc::c_ushort) -> libc::c_void;
+    fn glColor3bv(v: *libc::c_char) -> libc::c_void;
+    fn glColor3dv(v: *libc::c_double) -> libc::c_void;
+    fn glColor3fv(v: *libc::c_float) -> libc::c_void;
+    fn glColor3iv(v: *libc::c_int) -> libc::c_void;
+    fn glColor3sv(v: *libc::c_short) -> libc::c_void;
+    fn glColor3ubv(v: *libc::c_uchar) -> libc::c_void;
+    fn glColor3uiv(v: *libc::c_uint) -> libc::c_void;
+    fn glColor3usv(v: *libc::c_ushort) -> libc::c_void;
+    fn glColor4bv(v: *libc::c_char) -> libc::c_void;
+    fn glColor4dv(v: *libc::c_double) -> libc::c_void;
+    fn glColor4fv(v: *libc::c_float) -> libc::c_void;
+    fn glColor4iv(v: *libc::c_int) -> libc::c_void;
+    fn glColor4sv(v: *libc::c_short) -> libc::c_void;
+    fn glColor4ubv(v: *libc::c_uchar) -> libc::c_void;
+    fn glColor4uiv(v: *libc::c_uint) -> libc::c_void;
+    fn glColor4usv(v: *libc::c_ushort) -> libc::c_void;
+    fn glTexCoord1d(s: libc::c_double) -> libc::c_void;
+    fn glTexCoord1f(s: libc::c_float) -> libc::c_void;
+    fn glTexCoord1i(s: libc::c_int) -> libc::c_void;
+    fn glTexCoord1s(s: libc::c_short) -> libc::c_void;
+    fn glTexCoord2d(s: libc::c_double, t: libc::c_double) -> libc::c_void;
+    fn glTexCoord2f(s: libc::c_float, t: libc::c_float) -> libc::c_void;
+    fn glTexCoord2i(s: libc::c_int, t: libc::c_int) -> libc::c_void;
+    fn glTexCoord2s(s: libc::c_short, t: libc::c_short) -> libc::c_void;
+    fn glTexCoord3d(s: libc::c_double, t: libc::c_double, r: libc::c_double) -> libc::c_void;
+    fn glTexCoord3f(s: libc::c_float, t: libc::c_float, r: libc::c_float) -> libc::c_void;
+    fn glTexCoord3i(s: libc::c_int, t: libc::c_int, r: libc::c_int) -> libc::c_void;
+    fn glTexCoord3s(s: libc::c_short, t: libc::c_short, r: libc::c_short) -> libc::c_void;
+    fn glTexCoord4d(s: libc::c_double, t: libc::c_double, r: libc::c_double, q: libc::c_double) -> libc::c_void;
+    fn glTexCoord4f(s: libc::c_float, t: libc::c_float, r: libc::c_float, q: libc::c_float) -> libc::c_void;
+    fn glTexCoord4i(s: libc::c_int, t: libc::c_int, r: libc::c_int, q: libc::c_int) -> libc::c_void;
+    fn glTexCoord4s(s: libc::c_short, t: libc::c_short, r: libc::c_short, q: libc::c_short) -> libc::c_void;
+    fn glTexCoord1dv(v: *libc::c_double) -> libc::c_void;
+    fn glTexCoord1fv(v: *libc::c_float) -> libc::c_void;
+    fn glTexCoord1iv(v: *libc::c_int) -> libc::c_void;
+    fn glTexCoord1sv(v: *libc::c_short) -> libc::c_void;
+    fn glTexCoord2dv(v: *libc::c_double) -> libc::c_void;
+    fn glTexCoord2fv(v: *libc::c_float) -> libc::c_void;
+    fn glTexCoord2iv(v: *libc::c_int) -> libc::c_void;
+    fn glTexCoord2sv(v: *libc::c_short) -> libc::c_void;
+    fn glTexCoord3dv(v: *libc::c_double) -> libc::c_void;
+    fn glTexCoord3fv(v: *libc::c_float) -> libc::c_void;
+    fn glTexCoord3iv(v: *libc::c_int) -> libc::c_void;
+    fn glTexCoord3sv(v: *libc::c_short) -> libc::c_void;
+    fn glTexCoord4dv(v: *libc::c_double) -> libc::c_void;
+    fn glTexCoord4fv(v: *libc::c_float) -> libc::c_void;
+    fn glTexCoord4iv(v: *libc::c_int) -> libc::c_void;
+    fn glTexCoord4sv(v: *libc::c_short) -> libc::c_void;
+    fn glRasterPos2d(x: libc::c_double, y: libc::c_double) -> libc::c_void;
+    fn glRasterPos2f(x: libc::c_float, y: libc::c_float) -> libc::c_void;
+    fn glRasterPos2i(x: libc::c_int, y: libc::c_int) -> libc::c_void;
+    fn glRasterPos2s(x: libc::c_short, y: libc::c_short) -> libc::c_void;
+    fn glRasterPos3d(x: libc::c_double, y: libc::c_double, z: libc::c_double) -> libc::c_void;
+    fn glRasterPos3f(x: libc::c_float, y: libc::c_float, z: libc::c_float) -> libc::c_void;
+    fn glRasterPos3i(x: libc::c_int, y: libc::c_int, z: libc::c_int) -> libc::c_void;
+    fn glRasterPos3s(x: libc::c_short, y: libc::c_short, z: libc::c_short) -> libc::c_void;
+    fn glRasterPos4d(x: libc::c_double, y: libc::c_double, z: libc::c_double, w: libc::c_double) -> libc::c_void;
+    fn glRasterPos4f(x: libc::c_float, y: libc::c_float, z: libc::c_float, w: libc::c_float) -> libc::c_void;
+    fn glRasterPos4i(x: libc::c_int, y: libc::c_int, z: libc::c_int, w: libc::c_int) -> libc::c_void;
+    fn glRasterPos4s(x: libc::c_short, y: libc::c_short, z: libc::c_short, w: libc::c_short) -> libc::c_void;
+    fn glRasterPos2dv(v: *libc::c_double) -> libc::c_void;
+    fn glRasterPos2fv(v: *libc::c_float) -> libc::c_void;
+    fn glRasterPos2iv(v: *libc::c_int) -> libc::c_void;
+    fn glRasterPos2sv(v: *libc::c_short) -> libc::c_void;
+    fn glRasterPos3dv(v: *libc::c_double) -> libc::c_void;
+    fn glRasterPos3fv(v: *libc::c_float) -> libc::c_void;
+    fn glRasterPos3iv(v: *libc::c_int) -> libc::c_void;
+    fn glRasterPos3sv(v: *libc::c_short) -> libc::c_void;
+    fn glRasterPos4dv(v: *libc::c_double) -> libc::c_void;
+    fn glRasterPos4fv(v: *libc::c_float) -> libc::c_void;
+    fn glRasterPos4iv(v: *libc::c_int) -> libc::c_void;
+    fn glRasterPos4sv(v: *libc::c_short) -> libc::c_void;
+    fn glRectd(x1: libc::c_double, y1: libc::c_double, x2: libc::c_double, y2: libc::c_double) -> libc::c_void;
+    fn glRectf(x1: libc::c_float, y1: libc::c_float, x2: libc::c_float, y2: libc::c_float) -> libc::c_void;
+    fn glRecti(x1: libc::c_int, y1: libc::c_int, x2: libc::c_int, y2: libc::c_int) -> libc::c_void;
+    fn glRects(x1: libc::c_short, y1: libc::c_short, x2: libc::c_short, y2: libc::c_short) -> libc::c_void;
+    fn glRectdv(v1: *libc::c_double, v2: *libc::c_double) -> libc::c_void;
+    fn glRectfv(v1: *libc::c_float, v2: *libc::c_float) -> libc::c_void;
+    fn glRectiv(v1: *libc::c_int, v2: *libc::c_int) -> libc::c_void;
+    fn glRectsv(v1: *libc::c_short, v2: *libc::c_short) -> libc::c_void;
+    fn glVertexPointer(size: libc::c_int, type_: libc::c_uint, stride: libc::c_int, ptr: * libc::c_uchar) -> libc::c_void;
+    fn glNormalPointer(type_: libc::c_uint, stride: libc::c_int, ptr: * libc::c_uchar) -> libc::c_void;
+    fn glColorPointer(size: libc::c_int, type_: libc::c_uint, stride: libc::c_int, ptr: * libc::c_uchar) -> libc::c_void;
+    fn glIndexPointer(type_: libc::c_uint, stride: libc::c_int, ptr: * libc::c_uchar) -> libc::c_void;
+    fn glTexCoordPointer(size: libc::c_int, type_: libc::c_uint, stride: libc::c_int, ptr: * libc::c_uchar) -> libc::c_void;
+    fn glEdgeFlagPointer(stride: libc::c_int, ptr: * libc::c_uchar) -> libc::c_void;
+    fn glGetPointerv(pname: libc::c_uint, params: **libc::c_void) -> libc::c_void;
+    fn glArrayElement(i: libc::c_int) -> libc::c_void;
+    fn glDrawArrays(mode: libc::c_uint, first: libc::c_int, count: libc::c_int) -> libc::c_void;
+    fn glDrawElements(mode: libc::c_uint, count: libc::c_int, type_: libc::c_uint, indices: * libc::c_uchar) -> libc::c_void;
+    fn glInterleavedArrays(format: libc::c_uint, stride: libc::c_int, pointer: * libc::c_uchar) -> libc::c_void;
+    fn glShadeModel(mode: libc::c_uint) -> libc::c_void;
+    fn glLightf(light: libc::c_uint, pname: libc::c_uint, param: libc::c_float) -> libc::c_void;
+    fn glLighti(light: libc::c_uint, pname: libc::c_uint, param: libc::c_int) -> libc::c_void;
+    fn glLightfv(light: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glLightiv(light: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetLightfv(light: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glGetLightiv(light: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glLightModelf(pname: libc::c_uint, param: libc::c_float) -> libc::c_void;
+    fn glLightModeli(pname: libc::c_uint, param: libc::c_int) -> libc::c_void;
+    fn glLightModelfv(pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glLightModeliv(pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glMaterialf(face: libc::c_uint, pname: libc::c_uint, param: libc::c_float) -> libc::c_void;
+    fn glMateriali(face: libc::c_uint, pname: libc::c_uint, param: libc::c_int) -> libc::c_void;
+    fn glMaterialfv(face: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glMaterialiv(face: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetMaterialfv(face: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glGetMaterialiv(face: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glColorMaterial(face: libc::c_uint, mode: libc::c_uint) -> libc::c_void;
+    fn glPixelZoom(xfactor: libc::c_float, yfactor: libc::c_float) -> libc::c_void;
+    fn glPixelStoref(pname: libc::c_uint, param: libc::c_float) -> libc::c_void;
+    fn glPixelStorei(pname: libc::c_uint, param: libc::c_int) -> libc::c_void;
+    fn glPixelTransferf(pname: libc::c_uint, param: libc::c_float) -> libc::c_void;
+    fn glPixelTransferi(pname: libc::c_uint, param: libc::c_int) -> libc::c_void;
+    fn glPixelMapfv(map: libc::c_uint, mapsize: libc::c_int, values: *libc::c_float) -> libc::c_void;
+    fn glPixelMapuiv(map: libc::c_uint, mapsize: libc::c_int, values: *libc::c_uint) -> libc::c_void;
+    fn glPixelMapusv(map: libc::c_uint, mapsize: libc::c_int, values: *libc::c_ushort) -> libc::c_void;
+    fn glGetPixelMapfv(map: libc::c_uint, values: *libc::c_float) -> libc::c_void;
+    fn glGetPixelMapuiv(map: libc::c_uint, values: *libc::c_uint) -> libc::c_void;
+    fn glGetPixelMapusv(map: libc::c_uint, values: *libc::c_ushort) -> libc::c_void;
+    fn glBitmap(width: libc::c_int, height: libc::c_int, xorig: libc::c_float, yorig: libc::c_float, xmove: libc::c_float, ymove: libc::c_float, bitmap: *libc::c_uchar) -> libc::c_void;
+    fn glReadPixels(x: libc::c_int, y: libc::c_int, width: libc::c_int, height: libc::c_int, format: libc::c_uint, type_: libc::c_uint, pixels: * libc::c_uchar) -> libc::c_void;
+    fn glDrawPixels(width: libc::c_int, height: libc::c_int, format: libc::c_uint, type_: libc::c_uint, pixels: * libc::c_uchar) -> libc::c_void;
+    fn glCopyPixels(x: libc::c_int, y: libc::c_int, width: libc::c_int, height: libc::c_int, type_: libc::c_uint) -> libc::c_void;
+    fn glStencilFunc(func: libc::c_uint, ref: libc::c_int, mask: libc::c_uint) -> libc::c_void;
+    fn glStencilMask(mask: libc::c_uint) -> libc::c_void;
+    fn glStencilOp(fail_: libc::c_uint, zfail: libc::c_uint, zpass: libc::c_uint) -> libc::c_void;
+    fn glClearStencil(s: libc::c_int) -> libc::c_void;
+    fn glTexGend(coord: libc::c_uint, pname: libc::c_uint, param: libc::c_double) -> libc::c_void;
+    fn glTexGenf(coord: libc::c_uint, pname: libc::c_uint, param: libc::c_float) -> libc::c_void;
+    fn glTexGeni(coord: libc::c_uint, pname: libc::c_uint, param: libc::c_int) -> libc::c_void;
+    fn glTexGendv(coord: libc::c_uint, pname: libc::c_uint, params: *libc::c_double) -> libc::c_void;
+    fn glTexGenfv(coord: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glTexGeniv(coord: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetTexGendv(coord: libc::c_uint, pname: libc::c_uint, params: *libc::c_double) -> libc::c_void;
+    fn glGetTexGenfv(coord: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glGetTexGeniv(coord: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glTexEnvf(target: libc::c_uint, pname: libc::c_uint, param: libc::c_float) -> libc::c_void;
+    fn glTexEnvi(target: libc::c_uint, pname: libc::c_uint, param: libc::c_int) -> libc::c_void;
+    fn glTexEnvfv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glTexEnviv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetTexEnvfv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glGetTexEnviv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glTexParameterf(target: libc::c_uint, pname: libc::c_uint, param: libc::c_float) -> libc::c_void;
+    fn glTexParameteri(target: libc::c_uint, pname: libc::c_uint, param: libc::c_int) -> libc::c_void;
+    fn glTexParameterfv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glTexParameteriv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetTexParameterfv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glGetTexParameteriv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetTexLevelParameterfv(target: libc::c_uint, level: libc::c_int, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glGetTexLevelParameteriv(target: libc::c_uint, level: libc::c_int, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glTexImage1D(target: libc::c_uint, level: libc::c_int, internalFormat: libc::c_int, width: libc::c_int, border: libc::c_int, format: libc::c_uint, type_: libc::c_uint, pixels: * libc::c_uchar) -> libc::c_void;
+    fn glTexImage2D(target: libc::c_uint, level: libc::c_int, internalFormat: libc::c_int, width: libc::c_int, height: libc::c_int, border: libc::c_int, format: libc::c_uint, type_: libc::c_uint, pixels: * libc::c_uchar) -> libc::c_void;
+    fn glGetTexImage(target: libc::c_uint, level: libc::c_int, format: libc::c_uint, type_: libc::c_uint, pixels: * libc::c_uchar) -> libc::c_void;
+    fn glGenTextures(n: libc::c_int, textures: *libc::c_uint) -> libc::c_void;
+    fn glDeleteTextures(n: libc::c_int, textures: *libc::c_uint) -> libc::c_void;
+    fn glBindTexture(target: libc::c_uint, texture: libc::c_uint) -> libc::c_void;
+    fn glPrioritizeTextures(n: libc::c_int, textures: *libc::c_uint, priorities: *libc::c_float) -> libc::c_void;
+    fn glAreTexturesResident(n: libc::c_int, textures: *libc::c_uint, residences: *libc::c_uchar) -> libc::c_uchar;
+    fn glIsTexture(texture: libc::c_uint) -> libc::c_uchar;
+    fn glTexSubImage1D(target: libc::c_uint, level: libc::c_int, xoffset: libc::c_int, width: libc::c_int, format: libc::c_uint, type_: libc::c_uint, pixels: * libc::c_uchar) -> libc::c_void;
+    fn glTexSubImage2D(target: libc::c_uint, level: libc::c_int, xoffset: libc::c_int, yoffset: libc::c_int, width: libc::c_int, height: libc::c_int, format: libc::c_uint, type_: libc::c_uint, pixels: * libc::c_uchar) -> libc::c_void;
+    fn glCopyTexImage1D(target: libc::c_uint, level: libc::c_int, internalformat: libc::c_uint, x: libc::c_int, y: libc::c_int, width: libc::c_int, border: libc::c_int) -> libc::c_void;
+    fn glCopyTexImage2D(target: libc::c_uint, level: libc::c_int, internalformat: libc::c_uint, x: libc::c_int, y: libc::c_int, width: libc::c_int, height: libc::c_int, border: libc::c_int) -> libc::c_void;
+    fn glCopyTexSubImage1D(target: libc::c_uint, level: libc::c_int, xoffset: libc::c_int, x: libc::c_int, y: libc::c_int, width: libc::c_int) -> libc::c_void;
+    fn glCopyTexSubImage2D(target: libc::c_uint, level: libc::c_int, xoffset: libc::c_int, yoffset: libc::c_int, x: libc::c_int, y: libc::c_int, width: libc::c_int, height: libc::c_int) -> libc::c_void;
+    fn glMap1d(target: libc::c_uint, u1: libc::c_double, u2: libc::c_double, stride: libc::c_int, order: libc::c_int, points: *libc::c_double) -> libc::c_void;
+    fn glMap1f(target: libc::c_uint, u1: libc::c_float, u2: libc::c_float, stride: libc::c_int, order: libc::c_int, points: *libc::c_float) -> libc::c_void;
+    fn glMap2d(target: libc::c_uint, u1: libc::c_double, u2: libc::c_double, ustride: libc::c_int, uorder: libc::c_int, v1: libc::c_double, v2: libc::c_double, vstride: libc::c_int, vorder: libc::c_int, points: *libc::c_double) -> libc::c_void;
+    fn glMap2f(target: libc::c_uint, u1: libc::c_float, u2: libc::c_float, ustride: libc::c_int, uorder: libc::c_int, v1: libc::c_float, v2: libc::c_float, vstride: libc::c_int, vorder: libc::c_int, points: *libc::c_float) -> libc::c_void;
+    fn glGetMapdv(target: libc::c_uint, query: libc::c_uint, v: *libc::c_double) -> libc::c_void;
+    fn glGetMapfv(target: libc::c_uint, query: libc::c_uint, v: *libc::c_float) -> libc::c_void;
+    fn glGetMapiv(target: libc::c_uint, query: libc::c_uint, v: *libc::c_int) -> libc::c_void;
+    fn glEvalCoord1d(u: libc::c_double) -> libc::c_void;
+    fn glEvalCoord1f(u: libc::c_float) -> libc::c_void;
+    fn glEvalCoord1dv(u: *libc::c_double) -> libc::c_void;
+    fn glEvalCoord1fv(u: *libc::c_float) -> libc::c_void;
+    fn glEvalCoord2d(u: libc::c_double, v: libc::c_double) -> libc::c_void;
+    fn glEvalCoord2f(u: libc::c_float, v: libc::c_float) -> libc::c_void;
+    fn glEvalCoord2dv(u: *libc::c_double) -> libc::c_void;
+    fn glEvalCoord2fv(u: *libc::c_float) -> libc::c_void;
+    fn glMapGrid1d(un: libc::c_int, u1: libc::c_double, u2: libc::c_double) -> libc::c_void;
+    fn glMapGrid1f(un: libc::c_int, u1: libc::c_float, u2: libc::c_float) -> libc::c_void;
+    fn glMapGrid2d(un: libc::c_int, u1: libc::c_double, u2: libc::c_double, vn: libc::c_int, v1: libc::c_double, v2: libc::c_double) -> libc::c_void;
+    fn glMapGrid2f(un: libc::c_int, u1: libc::c_float, u2: libc::c_float, vn: libc::c_int, v1: libc::c_float, v2: libc::c_float) -> libc::c_void;
+    fn glEvalPoint1(i: libc::c_int) -> libc::c_void;
+    fn glEvalPoint2(i: libc::c_int, j: libc::c_int) -> libc::c_void;
+    fn glEvalMesh1(mode: libc::c_uint, i1: libc::c_int, i2: libc::c_int) -> libc::c_void;
+    fn glEvalMesh2(mode: libc::c_uint, i1: libc::c_int, i2: libc::c_int, j1: libc::c_int, j2: libc::c_int) -> libc::c_void;
+    fn glFogf(pname: libc::c_uint, param: libc::c_float) -> libc::c_void;
+    fn glFogi(pname: libc::c_uint, param: libc::c_int) -> libc::c_void;
+    fn glFogfv(pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glFogiv(pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glFeedbackBuffer(size: libc::c_int, type_: libc::c_uint, buffer: *libc::c_float) -> libc::c_void;
+    fn glPassThrough(token: libc::c_float) -> libc::c_void;
+    fn glSelectBuffer(size: libc::c_int, buffer: *libc::c_uint) -> libc::c_void;
+    fn glInitNames() -> libc::c_void;
+    fn glLoadName(name: libc::c_uint) -> libc::c_void;
+    fn glPushName(name: libc::c_uint) -> libc::c_void;
+    fn glPopName() -> libc::c_void;
+    fn glDrawRangeElements(mode: libc::c_uint, start: libc::c_uint, end: libc::c_uint, count: libc::c_int, type_: libc::c_uint, indices: * libc::c_uchar) -> libc::c_void;
+    fn glTexImage3D(target: libc::c_uint, level: libc::c_int, internalFormat: libc::c_int, width: libc::c_int, height: libc::c_int, depth: libc::c_int, border: libc::c_int, format: libc::c_uint, type_: libc::c_uint, pixels: * libc::c_uchar) -> libc::c_void;
+    fn glTexSubImage3D(target: libc::c_uint, level: libc::c_int, xoffset: libc::c_int, yoffset: libc::c_int, zoffset: libc::c_int, width: libc::c_int, height: libc::c_int, depth: libc::c_int, format: libc::c_uint, type_: libc::c_uint, pixels: * libc::c_uchar) -> libc::c_void;
+    fn glCopyTexSubImage3D(target: libc::c_uint, level: libc::c_int, xoffset: libc::c_int, yoffset: libc::c_int, zoffset: libc::c_int, x: libc::c_int, y: libc::c_int, width: libc::c_int, height: libc::c_int) -> libc::c_void;
+    fn glColorTable(target: libc::c_uint, internalformat: libc::c_uint, width: libc::c_int, format: libc::c_uint, type_: libc::c_uint, table: * libc::c_uchar) -> libc::c_void;
+    fn glColorSubTable(target: libc::c_uint, start: libc::c_int, count: libc::c_int, format: libc::c_uint, type_: libc::c_uint, data: * libc::c_uchar) -> libc::c_void;
+    fn glColorTableParameteriv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glColorTableParameterfv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glCopyColorSubTable(target: libc::c_uint, start: libc::c_int, x: libc::c_int, y: libc::c_int, width: libc::c_int) -> libc::c_void;
+    fn glCopyColorTable(target: libc::c_uint, internalformat: libc::c_uint, x: libc::c_int, y: libc::c_int, width: libc::c_int) -> libc::c_void;
+    fn glGetColorTable(target: libc::c_uint, format: libc::c_uint, type_: libc::c_uint, table: * libc::c_uchar) -> libc::c_void;
+    fn glGetColorTableParameterfv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glGetColorTableParameteriv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glBlendEquation(mode: libc::c_uint) -> libc::c_void;
+    fn glBlendColor(red: libc::c_float, green: libc::c_float, blue: libc::c_float, alpha: libc::c_float) -> libc::c_void;
+    fn glHistogram(target: libc::c_uint, width: libc::c_int, internalformat: libc::c_uint, sink: libc::c_uchar) -> libc::c_void;
+    fn glResetHistogram(target: libc::c_uint) -> libc::c_void;
+    fn glGetHistogram(target: libc::c_uint, reset: libc::c_uchar, format: libc::c_uint, type_: libc::c_uint, values: * libc::c_uchar) -> libc::c_void;
+    fn glGetHistogramParameterfv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glGetHistogramParameteriv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glMinmax(target: libc::c_uint, internalformat: libc::c_uint, sink: libc::c_uchar) -> libc::c_void;
+    fn glResetMinmax(target: libc::c_uint) -> libc::c_void;
+    fn glGetMinmax(target: libc::c_uint, reset: libc::c_uchar, format: libc::c_uint, types: libc::c_uint, values: * libc::c_uchar) -> libc::c_void;
+    fn glGetMinmaxParameterfv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glGetMinmaxParameteriv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glConvolutionFilter1D(target: libc::c_uint, internalformat: libc::c_uint, width: libc::c_int, format: libc::c_uint, type_: libc::c_uint, image: * libc::c_uchar) -> libc::c_void;
+    fn glConvolutionFilter2D(target: libc::c_uint, internalformat: libc::c_uint, width: libc::c_int, height: libc::c_int, format: libc::c_uint, type_: libc::c_uint, image: * libc::c_uchar) -> libc::c_void;
+    fn glConvolutionParameterf(target: libc::c_uint, pname: libc::c_uint, params: libc::c_float) -> libc::c_void;
+    fn glConvolutionParameterfv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glConvolutionParameteri(target: libc::c_uint, pname: libc::c_uint, params: libc::c_int) -> libc::c_void;
+    fn glConvolutionParameteriv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glCopyConvolutionFilter1D(target: libc::c_uint, internalformat: libc::c_uint, x: libc::c_int, y: libc::c_int, width: libc::c_int) -> libc::c_void;
+    fn glCopyConvolutionFilter2D(target: libc::c_uint, internalformat: libc::c_uint, x: libc::c_int, y: libc::c_int, width: libc::c_int, height: libc::c_int) -> libc::c_void;
+    fn glGetConvolutionFilter(target: libc::c_uint, format: libc::c_uint, type_: libc::c_uint, image: * libc::c_uchar) -> libc::c_void;
+    fn glGetConvolutionParameterfv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glGetConvolutionParameteriv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glSeparableFilter2D(target: libc::c_uint, internalformat: libc::c_uint, width: libc::c_int, height: libc::c_int, format: libc::c_uint, type_: libc::c_uint, row: * libc::c_uchar, column: * libc::c_uchar) -> libc::c_void;
+    fn glGetSeparableFilter(target: libc::c_uint, format: libc::c_uint, type_: libc::c_uint, row: * libc::c_uchar, column: * libc::c_uchar, span: * libc::c_uchar) -> libc::c_void;
+    fn glActiveTexture(texture: libc::c_uint) -> libc::c_void;
+    fn glClientActiveTexture(texture: libc::c_uint) -> libc::c_void;
+    fn glCompressedTexImage1D(target: libc::c_uint, level: libc::c_int, internalformat: libc::c_uint, width: libc::c_int, border: libc::c_int, imageSize: libc::c_int, data: * libc::c_uchar) -> libc::c_void;
+    fn glCompressedTexImage2D(target: libc::c_uint, level: libc::c_int, internalformat: libc::c_uint, width: libc::c_int, height: libc::c_int, border: libc::c_int, imageSize: libc::c_int, data: * libc::c_uchar) -> libc::c_void;
+    fn glCompressedTexImage3D(target: libc::c_uint, level: libc::c_int, internalformat: libc::c_uint, width: libc::c_int, height: libc::c_int, depth: libc::c_int, border: libc::c_int, imageSize: libc::c_int, data: * libc::c_uchar) -> libc::c_void;
+    fn glCompressedTexSubImage1D(target: libc::c_uint, level: libc::c_int, xoffset: libc::c_int, width: libc::c_int, format: libc::c_uint, imageSize: libc::c_int, data: * libc::c_uchar) -> libc::c_void;
+    fn glCompressedTexSubImage2D(target: libc::c_uint, level: libc::c_int, xoffset: libc::c_int, yoffset: libc::c_int, width: libc::c_int, height: libc::c_int, format: libc::c_uint, imageSize: libc::c_int, data: * libc::c_uchar) -> libc::c_void;
+    fn glCompressedTexSubImage3D(target: libc::c_uint, level: libc::c_int, xoffset: libc::c_int, yoffset: libc::c_int, zoffset: libc::c_int, width: libc::c_int, height: libc::c_int, depth: libc::c_int, format: libc::c_uint, imageSize: libc::c_int, data: * libc::c_uchar) -> libc::c_void;
+    fn glGetCompressedTexImage(target: libc::c_uint, lod: libc::c_int, img: * libc::c_uchar) -> libc::c_void;
+    fn glMultiTexCoord1d(target: libc::c_uint, s: libc::c_double) -> libc::c_void;
+    fn glMultiTexCoord1dv(target: libc::c_uint, v: *libc::c_double) -> libc::c_void;
+    fn glMultiTexCoord1f(target: libc::c_uint, s: libc::c_float) -> libc::c_void;
+    fn glMultiTexCoord1fv(target: libc::c_uint, v: *libc::c_float) -> libc::c_void;
+    fn glMultiTexCoord1i(target: libc::c_uint, s: libc::c_int) -> libc::c_void;
+    fn glMultiTexCoord1iv(target: libc::c_uint, v: *libc::c_int) -> libc::c_void;
+    fn glMultiTexCoord1s(target: libc::c_uint, s: libc::c_short) -> libc::c_void;
+    fn glMultiTexCoord1sv(target: libc::c_uint, v: *libc::c_short) -> libc::c_void;
+    fn glMultiTexCoord2d(target: libc::c_uint, s: libc::c_double, t: libc::c_double) -> libc::c_void;
+    fn glMultiTexCoord2dv(target: libc::c_uint, v: *libc::c_double) -> libc::c_void;
+    fn glMultiTexCoord2f(target: libc::c_uint, s: libc::c_float, t: libc::c_float) -> libc::c_void;
+    fn glMultiTexCoord2fv(target: libc::c_uint, v: *libc::c_float) -> libc::c_void;
+    fn glMultiTexCoord2i(target: libc::c_uint, s: libc::c_int, t: libc::c_int) -> libc::c_void;
+    fn glMultiTexCoord2iv(target: libc::c_uint, v: *libc::c_int) -> libc::c_void;
+    fn glMultiTexCoord2s(target: libc::c_uint, s: libc::c_short, t: libc::c_short) -> libc::c_void;
+    fn glMultiTexCoord2sv(target: libc::c_uint, v: *libc::c_short) -> libc::c_void;
+    fn glMultiTexCoord3d(target: libc::c_uint, s: libc::c_double, t: libc::c_double, r: libc::c_double) -> libc::c_void;
+    fn glMultiTexCoord3dv(target: libc::c_uint, v: *libc::c_double) -> libc::c_void;
+    fn glMultiTexCoord3f(target: libc::c_uint, s: libc::c_float, t: libc::c_float, r: libc::c_float) -> libc::c_void;
+    fn glMultiTexCoord3fv(target: libc::c_uint, v: *libc::c_float) -> libc::c_void;
+    fn glMultiTexCoord3i(target: libc::c_uint, s: libc::c_int, t: libc::c_int, r: libc::c_int) -> libc::c_void;
+    fn glMultiTexCoord3iv(target: libc::c_uint, v: *libc::c_int) -> libc::c_void;
+    fn glMultiTexCoord3s(target: libc::c_uint, s: libc::c_short, t: libc::c_short, r: libc::c_short) -> libc::c_void;
+    fn glMultiTexCoord3sv(target: libc::c_uint, v: *libc::c_short) -> libc::c_void;
+    fn glMultiTexCoord4d(target: libc::c_uint, s: libc::c_double, t: libc::c_double, r: libc::c_double, q: libc::c_double) -> libc::c_void;
+    fn glMultiTexCoord4dv(target: libc::c_uint, v: *libc::c_double) -> libc::c_void;
+    fn glMultiTexCoord4f(target: libc::c_uint, s: libc::c_float, t: libc::c_float, r: libc::c_float, q: libc::c_float) -> libc::c_void;
+    fn glMultiTexCoord4fv(target: libc::c_uint, v: *libc::c_float) -> libc::c_void;
+    fn glMultiTexCoord4i(target: libc::c_uint, s: libc::c_int, t: libc::c_int, r: libc::c_int, q: libc::c_int) -> libc::c_void;
+    fn glMultiTexCoord4iv(target: libc::c_uint, v: *libc::c_int) -> libc::c_void;
+    fn glMultiTexCoord4s(target: libc::c_uint, s: libc::c_short, t: libc::c_short, r: libc::c_short, q: libc::c_short) -> libc::c_void;
+    fn glMultiTexCoord4sv(target: libc::c_uint, v: *libc::c_short) -> libc::c_void;
+    fn glLoadTransposeMatrixd(m: libc::c_double) -> libc::c_void;
+    fn glLoadTransposeMatrixf(m: libc::c_float) -> libc::c_void;
+    fn glMultTransposeMatrixd(m: libc::c_double) -> libc::c_void;
+    fn glMultTransposeMatrixf(m: libc::c_float) -> libc::c_void;
+    fn glSampleCoverage(value: libc::c_float, invert: libc::c_uchar) -> libc::c_void;
+    fn glGetBooleanv(pname: libc::c_uint, params: *libc::c_uchar) -> libc::c_void;
+    fn glBlendFuncSeparate(sfactorRGB: libc::c_uint, dfactorRGB: libc::c_uint, sfactorAlpha: libc::c_uint, dfactorAlpha: libc::c_uint) -> libc::c_void;
+    fn glMultiDrawArrays(mode: libc::c_uint, first: *libc::c_int, count: *libc::c_int, primcount: libc::c_int) -> libc::c_void;
+    fn glMultiDrawElements(mode: libc::c_uint, count: *libc::c_int, type_: libc::c_uint, indices: **libc::c_void, primcount: libc::c_int) -> libc::c_void;
+    fn glPointParameterf(pname: libc::c_uint, param: libc::c_float) -> libc::c_void;
+    fn glPointParameterfv(pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glPointParameteri(pname: libc::c_uint, param: libc::c_int) -> libc::c_void;
+    fn glPointParameteriv(pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGenQueries(n: libc::c_int, ids: *libc::c_uint) -> libc::c_void;
+    fn glDeleteQueries(n: libc::c_int, ids: *libc::c_uint) -> libc::c_void;
+    fn glIsQuery(id: libc::c_uint) -> libc::c_uchar;
+    fn glBeginQuery(target: libc::c_uint, id: libc::c_uint) -> libc::c_void;
+    fn glEndQuery(target: libc::c_uint) -> libc::c_void;
+    fn glGetQueryiv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetQueryObjectiv(id: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetQueryObjectuiv(id: libc::c_uint, pname: libc::c_uint, params: *libc::c_uint) -> libc::c_void;
+    fn glBindBuffer(target: libc::c_uint, buffer: libc::c_uint) -> libc::c_void;
+    fn glDeleteBuffers(n: libc::c_int, buffers: *libc::c_uint) -> libc::c_void;
+    fn glGenBuffers(n: libc::c_int, buffers: *libc::c_uint) -> libc::c_void;
+    fn glIsBuffer(buffer: libc::c_uint) -> libc::c_uchar;
+    fn glBufferData(target: libc::c_uint, size: libc::ptrdiff_t, data: * libc::c_uchar, usage: libc::c_uint) -> libc::c_void;
+    fn glBufferSubData(target: libc::c_uint, offset: libc::intptr_t, size: libc::ptrdiff_t, data: * libc::c_uchar) -> libc::c_void;
+    fn glGetBufferSubData(target: libc::c_uint, offset: libc::intptr_t, size: libc::ptrdiff_t, data: * libc::c_uchar) -> libc::c_void;
+    fn glMapBuffer(target: libc::c_uint, access: libc::c_uint) -> *libc::c_void;
+    fn glUnmapBuffer(target: libc::c_uint) -> libc::c_uchar;
+    fn glGetBufferParameteriv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetBufferPointerv(target: libc::c_uint, pname: libc::c_uint, params: **libc::c_void) -> libc::c_void;
+    fn glBlendEquationSeparate(modeRGB: libc::c_uint, modeAlpha: libc::c_uint) -> libc::c_void;
+    fn glDrawBuffers(n: libc::c_int, bufs: *libc::c_uint) -> libc::c_void;
+    fn glStencilOpSeparate(face: libc::c_uint, sfail: libc::c_uint, dpfail: libc::c_uint, dppass: libc::c_uint) -> libc::c_void;
+    fn glStencilFuncSeparate(face: libc::c_uint, func: libc::c_uint, ref: libc::c_int, mask: libc::c_uint) -> libc::c_void;
+    fn glStencilMaskSeparate(face: libc::c_uint, mask: libc::c_uint) -> libc::c_void;
+    fn glAttachShader(program: libc::c_uint, shader: libc::c_uint) -> libc::c_void;
+    fn glBindAttribLocation(program: libc::c_uint, index: libc::c_uint, name: *libc::c_uchar) -> libc::c_void;
+    fn glCompileShader(shader: libc::c_uint) -> libc::c_void;
+    fn glCreateProgram() -> libc::c_uint;
+    fn glCreateShader(type_: libc::c_uint) -> libc::c_uint;
+    fn glDeleteProgram(program: libc::c_uint) -> libc::c_void;
+    fn glDeleteShader(shader: libc::c_uint) -> libc::c_void;
+    fn glDetachShader(program: libc::c_uint, shader: libc::c_uint) -> libc::c_void;
+    fn glDisableVertexAttribArray(index: libc::c_uint) -> libc::c_void;
+    fn glEnableVertexAttribArray(index: libc::c_uint) -> libc::c_void;
+    fn glGetActiveAttrib(program: libc::c_uint, index: libc::c_uint, bufSize: libc::c_int, length: *libc::c_int, size: *libc::c_int, type_: *libc::c_uint, name: *libc::c_uchar) -> libc::c_void;
+    fn glGetActiveUniform(program: libc::c_uint, index: libc::c_uint, bufSize: libc::c_int, length: *libc::c_int, size: *libc::c_int, type_: *libc::c_uint, name: *libc::c_uchar) -> libc::c_void;
+    fn glGetAttachedShaders(program: libc::c_uint, maxCount: libc::c_int, count: *libc::c_int, obj: *libc::c_uint) -> libc::c_void;
+    fn glGetAttribLocation(program: libc::c_uint, name: *libc::c_uchar) -> libc::c_int;
+    fn glGetProgramiv(program: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetProgramInfoLog(program: libc::c_uint, bufSize: libc::c_int, length: *libc::c_int, infoLog: *libc::c_uchar) -> libc::c_void;
+    fn glGetShaderiv(shader: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetShaderInfoLog(shader: libc::c_uint, bufSize: libc::c_int, length: *libc::c_int, infoLog: *libc::c_uchar) -> libc::c_void;
+    fn glGetShaderSource(shader: libc::c_uint, bufSize: libc::c_int, length: *libc::c_int, source: *libc::c_uchar) -> libc::c_void;
+    fn glGetUniformLocation(program: libc::c_uint, name: *libc::c_uchar) -> libc::c_int;
+    fn glGetUniformfv(program: libc::c_uint, location: libc::c_int, params: *libc::c_float) -> libc::c_void;
+    fn glGetUniformiv(program: libc::c_uint, location: libc::c_int, params: *libc::c_int) -> libc::c_void;
+    fn glGetVertexAttribdv(index: libc::c_uint, pname: libc::c_uint, params: *libc::c_double) -> libc::c_void;
+    fn glGetVertexAttribfv(index: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glGetVertexAttribiv(index: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetVertexAttribPointerv(index: libc::c_uint, pname: libc::c_uint, pointer: **libc::c_void) -> libc::c_void;
+    fn glIsProgram(program: libc::c_uint) -> libc::c_uchar;
+    fn glIsShader(shader: libc::c_uint) -> libc::c_uchar;
+    fn glLinkProgram(program: libc::c_uint) -> libc::c_void;
+    fn glShaderSource(shader: libc::c_uint, count: libc::c_int, string: **libc::c_uchar, length: *libc::c_int) -> libc::c_void;
+    fn glUseProgram(program: libc::c_uint) -> libc::c_void;
+    fn glUniform1f(location: libc::c_int, v0: libc::c_float) -> libc::c_void;
+    fn glUniform2f(location: libc::c_int, v0: libc::c_float, v1: libc::c_float) -> libc::c_void;
+    fn glUniform3f(location: libc::c_int, v0: libc::c_float, v1: libc::c_float, v2: libc::c_float) -> libc::c_void;
+    fn glUniform4f(location: libc::c_int, v0: libc::c_float, v1: libc::c_float, v2: libc::c_float, v3: libc::c_float) -> libc::c_void;
+    fn glUniform1i(location: libc::c_int, v0: libc::c_int) -> libc::c_void;
+    fn glUniform2i(location: libc::c_int, v0: libc::c_int, v1: libc::c_int) -> libc::c_void;
+    fn glUniform3i(location: libc::c_int, v0: libc::c_int, v1: libc::c_int, v2: libc::c_int) -> libc::c_void;
+    fn glUniform4i(location: libc::c_int, v0: libc::c_int, v1: libc::c_int, v2: libc::c_int, v3: libc::c_int) -> libc::c_void;
+    fn glUniform1fv(location: libc::c_int, count: libc::c_int, value: *libc::c_float) -> libc::c_void;
+    fn glUniform2fv(location: libc::c_int, count: libc::c_int, value: *libc::c_float) -> libc::c_void;
+    fn glUniform3fv(location: libc::c_int, count: libc::c_int, value: *libc::c_float) -> libc::c_void;
+    fn glUniform4fv(location: libc::c_int, count: libc::c_int, value: *libc::c_float) -> libc::c_void;
+    fn glUniform1iv(location: libc::c_int, count: libc::c_int, value: *libc::c_int) -> libc::c_void;
+    fn glUniform2iv(location: libc::c_int, count: libc::c_int, value: *libc::c_int) -> libc::c_void;
+    fn glUniform3iv(location: libc::c_int, count: libc::c_int, value: *libc::c_int) -> libc::c_void;
+    fn glUniform4iv(location: libc::c_int, count: libc::c_int, value: *libc::c_int) -> libc::c_void;
+    fn glUniformMatrix2fv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glUniformMatrix3fv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glUniformMatrix4fv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glValidateProgram(program: libc::c_uint) -> libc::c_void;
+    fn glVertexAttrib1d(index: libc::c_uint, x: libc::c_double) -> libc::c_void;
+    fn glVertexAttrib1dv(index: libc::c_uint, v: *libc::c_double) -> libc::c_void;
+    fn glVertexAttrib1f(index: libc::c_uint, x: libc::c_float) -> libc::c_void;
+    fn glVertexAttrib1fv(index: libc::c_uint, v: *libc::c_float) -> libc::c_void;
+    fn glVertexAttrib1s(index: libc::c_uint, x: libc::c_short) -> libc::c_void;
+    fn glVertexAttrib1sv(index: libc::c_uint, v: *libc::c_short) -> libc::c_void;
+    fn glVertexAttrib2d(index: libc::c_uint, x: libc::c_double, y: libc::c_double) -> libc::c_void;
+    fn glVertexAttrib2dv(index: libc::c_uint, v: *libc::c_double) -> libc::c_void;
+    fn glVertexAttrib2f(index: libc::c_uint, x: libc::c_float, y: libc::c_float) -> libc::c_void;
+    fn glVertexAttrib2fv(index: libc::c_uint, v: *libc::c_float) -> libc::c_void;
+    fn glVertexAttrib2s(index: libc::c_uint, x: libc::c_short, y: libc::c_short) -> libc::c_void;
+    fn glVertexAttrib2sv(index: libc::c_uint, v: *libc::c_short) -> libc::c_void;
+    fn glVertexAttrib3d(index: libc::c_uint, x: libc::c_double, y: libc::c_double, z: libc::c_double) -> libc::c_void;
+    fn glVertexAttrib3dv(index: libc::c_uint, v: *libc::c_double) -> libc::c_void;
+    fn glVertexAttrib3f(index: libc::c_uint, x: libc::c_float, y: libc::c_float, z: libc::c_float) -> libc::c_void;
+    fn glVertexAttrib3fv(index: libc::c_uint, v: *libc::c_float) -> libc::c_void;
+    fn glVertexAttrib3s(index: libc::c_uint, x: libc::c_short, y: libc::c_short, z: libc::c_short) -> libc::c_void;
+    fn glVertexAttrib3sv(index: libc::c_uint, v: *libc::c_short) -> libc::c_void;
+    fn glVertexAttrib4Nbv(index: libc::c_uint, v: *libc::c_char) -> libc::c_void;
+    fn glVertexAttrib4Niv(index: libc::c_uint, v: *libc::c_int) -> libc::c_void;
+    fn glVertexAttrib4Nsv(index: libc::c_uint, v: *libc::c_short) -> libc::c_void;
+    fn glVertexAttrib4Nub(index: libc::c_uint, x: libc::c_uchar, y: libc::c_uchar, z: libc::c_uchar, w: libc::c_uchar) -> libc::c_void;
+    fn glVertexAttrib4Nubv(index: libc::c_uint, v: *libc::c_uchar) -> libc::c_void;
+    fn glVertexAttrib4Nuiv(index: libc::c_uint, v: *libc::c_uint) -> libc::c_void;
+    fn glVertexAttrib4Nusv(index: libc::c_uint, v: *libc::c_ushort) -> libc::c_void;
+    fn glVertexAttrib4bv(index: libc::c_uint, v: *libc::c_char) -> libc::c_void;
+    fn glVertexAttrib4d(index: libc::c_uint, x: libc::c_double, y: libc::c_double, z: libc::c_double, w: libc::c_double) -> libc::c_void;
+    fn glVertexAttrib4dv(index: libc::c_uint, v: *libc::c_double) -> libc::c_void;
+    fn glVertexAttrib4f(index: libc::c_uint, x: libc::c_float, y: libc::c_float, z: libc::c_float, w: libc::c_float) -> libc::c_void;
+    fn glVertexAttrib4fv(index: libc::c_uint, v: *libc::c_float) -> libc::c_void;
+    fn glVertexAttrib4iv(index: libc::c_uint, v: *libc::c_int) -> libc::c_void;
+    fn glVertexAttrib4s(index: libc::c_uint, x: libc::c_short, y: libc::c_short, z: libc::c_short, w: libc::c_short) -> libc::c_void;
+    fn glVertexAttrib4sv(index: libc::c_uint, v: *libc::c_short) -> libc::c_void;
+    fn glVertexAttrib4ubv(index: libc::c_uint, v: *libc::c_uchar) -> libc::c_void;
+    fn glVertexAttrib4uiv(index: libc::c_uint, v: *libc::c_uint) -> libc::c_void;
+    fn glVertexAttrib4usv(index: libc::c_uint, v: *libc::c_ushort) -> libc::c_void;
+    fn glVertexAttribPointer(index: libc::c_uint, size: libc::c_int, type_: libc::c_uint, normalized: libc::c_uchar, stride: libc::c_int, pointer: * libc::c_uchar) -> libc::c_void;
+    fn glUniformMatrix2x3fv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glUniformMatrix3x2fv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glUniformMatrix2x4fv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glUniformMatrix4x2fv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glUniformMatrix3x4fv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glUniformMatrix4x3fv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glColorMaski(index: libc::c_uint, r: libc::c_uchar, g: libc::c_uchar, b: libc::c_uchar, a: libc::c_uchar) -> libc::c_void;
+    fn glGetBooleani_v(target: libc::c_uint, index: libc::c_uint, data: *libc::c_uchar) -> libc::c_void;
+    fn glGetIntegeri_v(target: libc::c_uint, index: libc::c_uint, data: *libc::c_int) -> libc::c_void;
+    fn glEnablei(target: libc::c_uint, index: libc::c_uint) -> libc::c_void;
+    fn glDisablei(target: libc::c_uint, index: libc::c_uint) -> libc::c_void;
+    fn glIsEnabledi(target: libc::c_uint, index: libc::c_uint) -> libc::c_uchar;
+    fn glBindBufferRange(target: libc::c_uint, index: libc::c_uint, buffer: libc::c_uint, offset: libc::intptr_t, size: libc::ptrdiff_t) -> libc::c_void;
+    fn glBindBufferBase(target: libc::c_uint, index: libc::c_uint, buffer: libc::c_uint) -> libc::c_void;
+    fn glTransformFeedbackVaryings(program: libc::c_uint, count: libc::c_int, varyings: **libc::c_uchar, bufferMode: libc::c_uint) -> libc::c_void;
+    fn glGetTransformFeedbackVarying(program: libc::c_uint, index: libc::c_uint, bufSize: libc::c_int, length: *libc::c_int, size: *libc::c_int, type_: *libc::c_uint, name: *libc::c_uchar) -> libc::c_void;
+    fn glClampColor(target: libc::c_uint, clamp: libc::c_uint) -> libc::c_void;
+    fn glBeginConditionalRender(id: libc::c_uint, mode: libc::c_uint) -> libc::c_void;
+    fn glEndConditionalRender() -> libc::c_void;
+    fn glVertexAttribIPointer(index: libc::c_uint, size: libc::c_int, type_: libc::c_uint, stride: libc::c_int, pointer: * libc::c_uchar) -> libc::c_void;
+    fn glGetVertexAttribIiv(index: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetVertexAttribIuiv(index: libc::c_uint, pname: libc::c_uint, params: *libc::c_uint) -> libc::c_void;
+    fn glVertexAttribI1i(index: libc::c_uint, x: libc::c_int) -> libc::c_void;
+    fn glVertexAttribI2i(index: libc::c_uint, x: libc::c_int, y: libc::c_int) -> libc::c_void;
+    fn glVertexAttribI3i(index: libc::c_uint, x: libc::c_int, y: libc::c_int, z: libc::c_int) -> libc::c_void;
+    fn glVertexAttribI4i(index: libc::c_uint, x: libc::c_int, y: libc::c_int, z: libc::c_int, w: libc::c_int) -> libc::c_void;
+    fn glVertexAttribI1ui(index: libc::c_uint, x: libc::c_uint) -> libc::c_void;
+    fn glVertexAttribI2ui(index: libc::c_uint, x: libc::c_uint, y: libc::c_uint) -> libc::c_void;
+    fn glVertexAttribI3ui(index: libc::c_uint, x: libc::c_uint, y: libc::c_uint, z: libc::c_uint) -> libc::c_void;
+    fn glVertexAttribI4ui(index: libc::c_uint, x: libc::c_uint, y: libc::c_uint, z: libc::c_uint, w: libc::c_uint) -> libc::c_void;
+    fn glVertexAttribI1iv(index: libc::c_uint, v: *libc::c_int) -> libc::c_void;
+    fn glVertexAttribI2iv(index: libc::c_uint, v: *libc::c_int) -> libc::c_void;
+    fn glVertexAttribI3iv(index: libc::c_uint, v: *libc::c_int) -> libc::c_void;
+    fn glVertexAttribI4iv(index: libc::c_uint, v: *libc::c_int) -> libc::c_void;
+    fn glVertexAttribI1uiv(index: libc::c_uint, v: *libc::c_uint) -> libc::c_void;
+    fn glVertexAttribI2uiv(index: libc::c_uint, v: *libc::c_uint) -> libc::c_void;
+    fn glVertexAttribI3uiv(index: libc::c_uint, v: *libc::c_uint) -> libc::c_void;
+    fn glVertexAttribI4uiv(index: libc::c_uint, v: *libc::c_uint) -> libc::c_void;
+    fn glVertexAttribI4bv(index: libc::c_uint, v: *libc::c_char) -> libc::c_void;
+    fn glVertexAttribI4sv(index: libc::c_uint, v: *libc::c_short) -> libc::c_void;
+    fn glVertexAttribI4ubv(index: libc::c_uint, v: *libc::c_uchar) -> libc::c_void;
+    fn glVertexAttribI4usv(index: libc::c_uint, v: *libc::c_ushort) -> libc::c_void;
+    fn glGetUniformuiv(program: libc::c_uint, location: libc::c_int, params: *libc::c_uint) -> libc::c_void;
+    fn glBindFragDataLocation(program: libc::c_uint, color: libc::c_uint, name: *libc::c_uchar) -> libc::c_void;
+    fn glGetFragDataLocation(program: libc::c_uint, name: *libc::c_uchar) -> libc::c_int;
+    fn glUniform1ui(location: libc::c_int, v0: libc::c_uint) -> libc::c_void;
+    fn glUniform2ui(location: libc::c_int, v0: libc::c_uint, v1: libc::c_uint) -> libc::c_void;
+    fn glUniform3ui(location: libc::c_int, v0: libc::c_uint, v1: libc::c_uint, v2: libc::c_uint) -> libc::c_void;
+    fn glUniform4ui(location: libc::c_int, v0: libc::c_uint, v1: libc::c_uint, v2: libc::c_uint, v3: libc::c_uint) -> libc::c_void;
+    fn glUniform1uiv(location: libc::c_int, count: libc::c_int, value: *libc::c_uint) -> libc::c_void;
+    fn glUniform2uiv(location: libc::c_int, count: libc::c_int, value: *libc::c_uint) -> libc::c_void;
+    fn glUniform3uiv(location: libc::c_int, count: libc::c_int, value: *libc::c_uint) -> libc::c_void;
+    fn glUniform4uiv(location: libc::c_int, count: libc::c_int, value: *libc::c_uint) -> libc::c_void;
+    fn glTexParameterIiv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glTexParameterIuiv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_uint) -> libc::c_void;
+    fn glGetTexParameterIiv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetTexParameterIuiv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_uint) -> libc::c_void;
+    fn glClearBufferiv(buffer: libc::c_uint, drawbuffer: libc::c_int, value: *libc::c_int) -> libc::c_void;
+    fn glClearBufferuiv(buffer: libc::c_uint, drawbuffer: libc::c_int, value: *libc::c_uint) -> libc::c_void;
+    fn glClearBufferfv(buffer: libc::c_uint, drawbuffer: libc::c_int, value: *libc::c_float) -> libc::c_void;
+    fn glClearBufferfi(buffer: libc::c_uint, drawbuffer: libc::c_int, depth: libc::c_float, stencil: libc::c_int) -> libc::c_void;
+    fn glGetStringi(name: libc::c_uint, index: libc::c_uint) -> *libc::c_uchar;
+    fn glDrawArraysInstanced(mode: libc::c_uint, first: libc::c_int, count: libc::c_int, primcount: libc::c_int) -> libc::c_void;
+    fn glDrawElementsInstanced(mode: libc::c_uint, count: libc::c_int, type_: libc::c_uint, indices: * libc::c_uchar, primcount: libc::c_int) -> libc::c_void;
+    fn glTexBuffer(target: libc::c_uint, internalformat: libc::c_uint, buffer: libc::c_uint) -> libc::c_void;
+    fn glPrimitiveRestartIndex(index: libc::c_uint) -> libc::c_void;
+    fn glGetInteger64i_v(target: libc::c_uint, index: libc::c_uint, data: *libc::c_longlong) -> libc::c_void;
+    fn glGetBufferParameteri64v(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_longlong) -> libc::c_void;
+    fn glFramebufferTexture(target: libc::c_uint, attachment: libc::c_uint, texture: libc::c_uint, level: libc::c_int) -> libc::c_void;
+    fn glVertexAttribDivisor(index: libc::c_uint, divisor: libc::c_uint) -> libc::c_void;
+    fn glMinSampleShading(value: libc::c_float) -> libc::c_void;
+    fn glBlendEquationi(buf: libc::c_uint, mode: libc::c_uint) -> libc::c_void;
+    fn glBlendEquationSeparatei(buf: libc::c_uint, modeRGB: libc::c_uint, modeAlpha: libc::c_uint) -> libc::c_void;
+    fn glBlendFunci(buf: libc::c_uint, src: libc::c_uint, dst: libc::c_uint) -> libc::c_void;
+    fn glBlendFuncSeparatei(buf: libc::c_uint, srcRGB: libc::c_uint, dstRGB: libc::c_uint, srcAlpha: libc::c_uint, dstAlpha: libc::c_uint) -> libc::c_void;
+    fn glIsRenderbuffer(renderbuffer: libc::c_uint) -> libc::c_uchar;
+    fn glBindRenderbuffer(target: libc::c_uint, renderbuffer: libc::c_uint) -> libc::c_void;
+    fn glDeleteRenderbuffers(n: libc::c_int, renderbuffers: *libc::c_uint) -> libc::c_void;
+    fn glGenRenderbuffers(n: libc::c_int, renderbuffers: *libc::c_uint) -> libc::c_void;
+    fn glRenderbufferStorage(target: libc::c_uint, internalformat: libc::c_uint, width: libc::c_int, height: libc::c_int) -> libc::c_void;
+    fn glGetRenderbufferParameteriv(target: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glIsFramebuffer(framebuffer: libc::c_uint) -> libc::c_uchar;
+    fn glBindFramebuffer(target: libc::c_uint, framebuffer: libc::c_uint) -> libc::c_void;
+    fn glDeleteFramebuffers(n: libc::c_int, framebuffers: *libc::c_uint) -> libc::c_void;
+    fn glGenFramebuffers(n: libc::c_int, framebuffers: *libc::c_uint) -> libc::c_void;
+    fn glCheckFramebufferStatus(target: libc::c_uint) -> libc::c_uint;
+    fn glFramebufferTexture1D(target: libc::c_uint, attachment: libc::c_uint, textarget: libc::c_uint, texture: libc::c_uint, level: libc::c_int) -> libc::c_void;
+    fn glFramebufferTexture2D(target: libc::c_uint, attachment: libc::c_uint, textarget: libc::c_uint, texture: libc::c_uint, level: libc::c_int) -> libc::c_void;
+    fn glFramebufferTexture3D(target: libc::c_uint, attachment: libc::c_uint, textarget: libc::c_uint, texture: libc::c_uint, level: libc::c_int, zoffset: libc::c_int) -> libc::c_void;
+    fn glFramebufferRenderbuffer(target: libc::c_uint, attachment: libc::c_uint, renderbuffertarget: libc::c_uint, renderbuffer: libc::c_uint) -> libc::c_void;
+    fn glGetFramebufferAttachmentParameteriv(target: libc::c_uint, attachment: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGenerateMipmap(target: libc::c_uint) -> libc::c_void;
+    fn glBlitFramebuffer(srcX0: libc::c_int, srcY0: libc::c_int, srcX1: libc::c_int, srcY1: libc::c_int, dstX0: libc::c_int, dstY0: libc::c_int, dstX1: libc::c_int, dstY1: libc::c_int, mask: libc::c_uint, filter: libc::c_uint) -> libc::c_void;
+    fn glRenderbufferStorageMultisample(target: libc::c_uint, samples: libc::c_int, internalformat: libc::c_uint, width: libc::c_int, height: libc::c_int) -> libc::c_void;
+    fn glFramebufferTextureLayer(target: libc::c_uint, attachment: libc::c_uint, texture: libc::c_uint, level: libc::c_int, layer: libc::c_int) -> libc::c_void;
+    fn glMapBufferRange(target: libc::c_uint, offset: libc::intptr_t, length: libc::ptrdiff_t, access: libc::c_uint) -> *libc::c_void;
+    fn glFlushMappedBufferRange(target: libc::c_uint, offset: libc::intptr_t, length: libc::ptrdiff_t) -> libc::c_void;
+    fn glBindVertexArray(array: libc::c_uint) -> libc::c_void;
+    fn glDeleteVertexArrays(n: libc::c_int, arrays: *libc::c_uint) -> libc::c_void;
+    fn glGenVertexArrays(n: libc::c_int, arrays: *libc::c_uint) -> libc::c_void;
+    fn glIsVertexArray(array: libc::c_uint) -> libc::c_uchar;
+    fn glGetUniformIndices(program: libc::c_uint, uniformCount: libc::c_int, uniformNames: **libc::c_uchar, uniformIndices: *libc::c_uint) -> libc::c_void;
+    fn glGetActiveUniformsiv(program: libc::c_uint, uniformCount: libc::c_int, uniformIndices: *libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetActiveUniformName(program: libc::c_uint, uniformIndex: libc::c_uint, bufSize: libc::c_int, length: *libc::c_int, uniformName: *libc::c_uchar) -> libc::c_void;
+    fn glGetUniformBlockIndex(program: libc::c_uint, uniformBlockName: *libc::c_uchar) -> libc::c_uint;
+    fn glGetActiveUniformBlockiv(program: libc::c_uint, uniformBlockIndex: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetActiveUniformBlockName(program: libc::c_uint, uniformBlockIndex: libc::c_uint, bufSize: libc::c_int, length: *libc::c_int, uniformBlockName: *libc::c_uchar) -> libc::c_void;
+    fn glUniformBlockBinding(program: libc::c_uint, uniformBlockIndex: libc::c_uint, uniformBlockBinding: libc::c_uint) -> libc::c_void;
+    fn glCopyBufferSubData(readTarget: libc::c_uint, writeTarget: libc::c_uint, readOffset: libc::intptr_t, writeOffset: libc::intptr_t, size: libc::ptrdiff_t) -> libc::c_void;
+    fn glDrawElementsBaseVertex(mode: libc::c_uint, count: libc::c_int, type_: libc::c_uint, indices: * libc::c_uchar, basevertex: libc::c_int) -> libc::c_void;
+    fn glDrawRangeElementsBaseVertex(mode: libc::c_uint, start: libc::c_uint, end: libc::c_uint, count: libc::c_int, type_: libc::c_uint, indices: * libc::c_uchar, basevertex: libc::c_int) -> libc::c_void;
+    fn glDrawElementsInstancedBaseVertex(mode: libc::c_uint, count: libc::c_int, type_: libc::c_uint, indices: * libc::c_uchar, primcount: libc::c_int, basevertex: libc::c_int) -> libc::c_void;
+    fn glMultiDrawElementsBaseVertex(mode: libc::c_uint, count: *libc::c_int, type_: libc::c_uint, indices: **libc::c_void, primcount: libc::c_int, basevertex: *libc::c_int) -> libc::c_void;
+    fn glProvokingVertex(mode: libc::c_uint) -> libc::c_void;
+    fn glIsSync() -> libc::c_uchar;
+    fn glDeleteSync() -> libc::c_void;
+    fn glClientWaitSync(flags: libc::c_uint, timeout: libc::c_ulonglong) -> libc::c_uint;
+    fn glWaitSync(flags: libc::c_uint, timeout: libc::c_ulonglong) -> libc::c_void;
+    fn glGetInteger64v(pname: libc::c_uint, params: *libc::c_longlong) -> libc::c_void;
+    fn glGetSynciv(pname: libc::c_uint, bufSize: libc::c_int, length: *libc::c_int, values: *libc::c_int) -> libc::c_void;
+    fn glTexImage2DMultisample(target: libc::c_uint, samples: libc::c_int, internalformat: libc::c_int, width: libc::c_int, height: libc::c_int, fixedsamplelocations: libc::c_uchar) -> libc::c_void;
+    fn glTexImage3DMultisample(target: libc::c_uint, samples: libc::c_int, internalformat: libc::c_int, width: libc::c_int, height: libc::c_int, depth: libc::c_int, fixedsamplelocations: libc::c_uchar) -> libc::c_void;
+    fn glGetMultisamplefv(pname: libc::c_uint, index: libc::c_uint, val: *libc::c_float) -> libc::c_void;
+    fn glSampleMaski(index: libc::c_uint, mask: libc::c_uint) -> libc::c_void;
+    fn glBindFragDataLocationIndexed(program: libc::c_uint, colorNumber: libc::c_uint, index: libc::c_uint, name: *libc::c_uchar) -> libc::c_void;
+    fn glGetFragDataIndex(program: libc::c_uint, name: *libc::c_uchar) -> libc::c_int;
+    fn glGenSamplers(count: libc::c_int, samplers: *libc::c_uint) -> libc::c_void;
+    fn glDeleteSamplers(count: libc::c_int, samplers: *libc::c_uint) -> libc::c_void;
+    fn glIsSampler(sampler: libc::c_uint) -> libc::c_uchar;
+    fn glBindSampler(unit: libc::c_uint, sampler: libc::c_uint) -> libc::c_void;
+    fn glSamplerParameteri(sampler: libc::c_uint, pname: libc::c_uint, param: libc::c_int) -> libc::c_void;
+    fn glSamplerParameteriv(sampler: libc::c_uint, pname: libc::c_uint, param: *libc::c_int) -> libc::c_void;
+    fn glSamplerParameterf(sampler: libc::c_uint, pname: libc::c_uint, param: libc::c_float) -> libc::c_void;
+    fn glSamplerParameterfv(sampler: libc::c_uint, pname: libc::c_uint, param: *libc::c_float) -> libc::c_void;
+    fn glSamplerParameterIiv(sampler: libc::c_uint, pname: libc::c_uint, param: *libc::c_int) -> libc::c_void;
+    fn glSamplerParameterIuiv(sampler: libc::c_uint, pname: libc::c_uint, param: *libc::c_uint) -> libc::c_void;
+    fn glGetSamplerParameteriv(sampler: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetSamplerParameterIiv(sampler: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glGetSamplerParameterfv(sampler: libc::c_uint, pname: libc::c_uint, params: *libc::c_float) -> libc::c_void;
+    fn glGetSamplerParameterIuiv(sampler: libc::c_uint, pname: libc::c_uint, params: *libc::c_uint) -> libc::c_void;
+    fn glQueryCounter(id: libc::c_uint, target: libc::c_uint) -> libc::c_void;
+    fn glGetQueryObjecti64v(id: libc::c_uint, pname: libc::c_uint, params: *libc::c_longlong) -> libc::c_void;
+    fn glGetQueryObjectui64v(id: libc::c_uint, pname: libc::c_uint, params: *libc::c_ulonglong) -> libc::c_void;
+    fn glVertexP2ui(type_: libc::c_uint, value: libc::c_uint) -> libc::c_void;
+    fn glVertexP2uiv(type_: libc::c_uint, value: *libc::c_uint) -> libc::c_void;
+    fn glVertexP3ui(type_: libc::c_uint, value: libc::c_uint) -> libc::c_void;
+    fn glVertexP3uiv(type_: libc::c_uint, value: *libc::c_uint) -> libc::c_void;
+    fn glVertexP4ui(type_: libc::c_uint, value: libc::c_uint) -> libc::c_void;
+    fn glVertexP4uiv(type_: libc::c_uint, value: *libc::c_uint) -> libc::c_void;
+    fn glTexCoordP1ui(type_: libc::c_uint, coords: libc::c_uint) -> libc::c_void;
+    fn glTexCoordP1uiv(type_: libc::c_uint, coords: *libc::c_uint) -> libc::c_void;
+    fn glTexCoordP2ui(type_: libc::c_uint, coords: libc::c_uint) -> libc::c_void;
+    fn glTexCoordP2uiv(type_: libc::c_uint, coords: *libc::c_uint) -> libc::c_void;
+    fn glTexCoordP3ui(type_: libc::c_uint, coords: libc::c_uint) -> libc::c_void;
+    fn glTexCoordP3uiv(type_: libc::c_uint, coords: *libc::c_uint) -> libc::c_void;
+    fn glTexCoordP4ui(type_: libc::c_uint, coords: libc::c_uint) -> libc::c_void;
+    fn glTexCoordP4uiv(type_: libc::c_uint, coords: *libc::c_uint) -> libc::c_void;
+    fn glMultiTexCoordP1ui(texture: libc::c_uint, type_: libc::c_uint, coords: libc::c_uint) -> libc::c_void;
+    fn glMultiTexCoordP1uiv(texture: libc::c_uint, type_: libc::c_uint, coords: *libc::c_uint) -> libc::c_void;
+    fn glMultiTexCoordP2ui(texture: libc::c_uint, type_: libc::c_uint, coords: libc::c_uint) -> libc::c_void;
+    fn glMultiTexCoordP2uiv(texture: libc::c_uint, type_: libc::c_uint, coords: *libc::c_uint) -> libc::c_void;
+    fn glMultiTexCoordP3ui(texture: libc::c_uint, type_: libc::c_uint, coords: libc::c_uint) -> libc::c_void;
+    fn glMultiTexCoordP3uiv(texture: libc::c_uint, type_: libc::c_uint, coords: *libc::c_uint) -> libc::c_void;
+    fn glMultiTexCoordP4ui(texture: libc::c_uint, type_: libc::c_uint, coords: libc::c_uint) -> libc::c_void;
+    fn glMultiTexCoordP4uiv(texture: libc::c_uint, type_: libc::c_uint, coords: *libc::c_uint) -> libc::c_void;
+    fn glNormalP3ui(type_: libc::c_uint, coords: libc::c_uint) -> libc::c_void;
+    fn glNormalP3uiv(type_: libc::c_uint, coords: *libc::c_uint) -> libc::c_void;
+    fn glColorP3ui(type_: libc::c_uint, color: libc::c_uint) -> libc::c_void;
+    fn glColorP3uiv(type_: libc::c_uint, color: *libc::c_uint) -> libc::c_void;
+    fn glColorP4ui(type_: libc::c_uint, color: libc::c_uint) -> libc::c_void;
+    fn glColorP4uiv(type_: libc::c_uint, color: *libc::c_uint) -> libc::c_void;
+    fn glSecondaryColorP3ui(type_: libc::c_uint, color: libc::c_uint) -> libc::c_void;
+    fn glSecondaryColorP3uiv(type_: libc::c_uint, color: *libc::c_uint) -> libc::c_void;
+    fn glVertexAttribP1ui(index: libc::c_uint, type_: libc::c_uint, normalized: libc::c_uchar, value: libc::c_uint) -> libc::c_void;
+    fn glVertexAttribP1uiv(index: libc::c_uint, type_: libc::c_uint, normalized: libc::c_uchar, value: *libc::c_uint) -> libc::c_void;
+    fn glVertexAttribP2ui(index: libc::c_uint, type_: libc::c_uint, normalized: libc::c_uchar, value: libc::c_uint) -> libc::c_void;
+    fn glVertexAttribP2uiv(index: libc::c_uint, type_: libc::c_uint, normalized: libc::c_uchar, value: *libc::c_uint) -> libc::c_void;
+    fn glVertexAttribP3ui(index: libc::c_uint, type_: libc::c_uint, normalized: libc::c_uchar, value: libc::c_uint) -> libc::c_void;
+    fn glVertexAttribP3uiv(index: libc::c_uint, type_: libc::c_uint, normalized: libc::c_uchar, value: *libc::c_uint) -> libc::c_void;
+    fn glVertexAttribP4ui(index: libc::c_uint, type_: libc::c_uint, normalized: libc::c_uchar, value: libc::c_uint) -> libc::c_void;
+    fn glVertexAttribP4uiv(index: libc::c_uint, type_: libc::c_uint, normalized: libc::c_uchar, value: *libc::c_uint) -> libc::c_void;
+    fn glDrawArraysIndirect(mode: libc::c_uint, indirect: * libc::c_uchar) -> libc::c_void;
+    fn glDrawElementsIndirect(mode: libc::c_uint, type_: libc::c_uint, indirect: * libc::c_uchar) -> libc::c_void;
+    fn glUniform1d(location: libc::c_int, x: libc::c_double) -> libc::c_void;
+    fn glUniform2d(location: libc::c_int, x: libc::c_double, y: libc::c_double) -> libc::c_void;
+    fn glUniform3d(location: libc::c_int, x: libc::c_double, y: libc::c_double, z: libc::c_double) -> libc::c_void;
+    fn glUniform4d(location: libc::c_int, x: libc::c_double, y: libc::c_double, z: libc::c_double, w: libc::c_double) -> libc::c_void;
+    fn glUniform1dv(location: libc::c_int, count: libc::c_int, value: *libc::c_double) -> libc::c_void;
+    fn glUniform2dv(location: libc::c_int, count: libc::c_int, value: *libc::c_double) -> libc::c_void;
+    fn glUniform3dv(location: libc::c_int, count: libc::c_int, value: *libc::c_double) -> libc::c_void;
+    fn glUniform4dv(location: libc::c_int, count: libc::c_int, value: *libc::c_double) -> libc::c_void;
+    fn glUniformMatrix2dv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glUniformMatrix3dv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glUniformMatrix4dv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glUniformMatrix2x3dv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glUniformMatrix2x4dv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glUniformMatrix3x2dv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glUniformMatrix3x4dv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glUniformMatrix4x2dv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glUniformMatrix4x3dv(location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glGetUniformdv(program: libc::c_uint, location: libc::c_int, params: *libc::c_double) -> libc::c_void;
+    fn glGetSubroutineUniformLocation(program: libc::c_uint, shadertype: libc::c_uint, name: *libc::c_uchar) -> libc::c_int;
+    fn glGetSubroutineIndex(program: libc::c_uint, shadertype: libc::c_uint, name: *libc::c_uchar) -> libc::c_uint;
+    fn glGetActiveSubroutineUniformiv(program: libc::c_uint, shadertype: libc::c_uint, index: libc::c_uint, pname: libc::c_uint, values: *libc::c_int) -> libc::c_void;
+    fn glGetActiveSubroutineUniformName(program: libc::c_uint, shadertype: libc::c_uint, index: libc::c_uint, bufsize: libc::c_int, length: *libc::c_int, name: *libc::c_uchar) -> libc::c_void;
+    fn glGetActiveSubroutineName(program: libc::c_uint, shadertype: libc::c_uint, index: libc::c_uint, bufsize: libc::c_int, length: *libc::c_int, name: *libc::c_uchar) -> libc::c_void;
+    fn glUniformSubroutinesuiv(shadertype: libc::c_uint, count: libc::c_int, indices: *libc::c_uint) -> libc::c_void;
+    fn glGetUniformSubroutineuiv(shadertype: libc::c_uint, location: libc::c_int, params: *libc::c_uint) -> libc::c_void;
+    fn glGetProgramStageiv(program: libc::c_uint, shadertype: libc::c_uint, pname: libc::c_uint, values: *libc::c_int) -> libc::c_void;
+    fn glPatchParameteri(pname: libc::c_uint, value: libc::c_int) -> libc::c_void;
+    fn glPatchParameterfv(pname: libc::c_uint, values: *libc::c_float) -> libc::c_void;
+    fn glDeleteTransformFeedbacks(n: libc::c_int, ids: *libc::c_uint) -> libc::c_void;
+    fn glGenTransformFeedbacks(n: libc::c_int, ids: *libc::c_uint) -> libc::c_void;
+    fn glDrawTransformFeedbackStream(mode: libc::c_uint, id: libc::c_uint, stream: libc::c_uint) -> libc::c_void;
+    fn glBeginQueryIndexed(target: libc::c_uint, index: libc::c_uint, id: libc::c_uint) -> libc::c_void;
+    fn glEndQueryIndexed(target: libc::c_uint, index: libc::c_uint) -> libc::c_void;
+    fn glGetQueryIndexediv(target: libc::c_uint, index: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glReleaseShaderCompiler() -> libc::c_void;
+    fn glShaderBinary(count: libc::c_int, shaders: *libc::c_uint, binaryformat: libc::c_uint, binary: * libc::c_uchar, length: libc::c_int) -> libc::c_void;
+    fn glGetShaderPrecisionFormat(shadertype: libc::c_uint, precisiontype: libc::c_uint, range: *libc::c_int, precision: *libc::c_int) -> libc::c_void;
+    fn glDepthRangef(n: libc::c_float, f: libc::c_float) -> libc::c_void;
+    fn glClearDepthf(d: libc::c_float) -> libc::c_void;
+    fn glGetProgramBinary(program: libc::c_uint, bufSize: libc::c_int, length: *libc::c_int, binaryFormat: *libc::c_uint, binary: * libc::c_uchar) -> libc::c_void;
+    fn glProgramBinary(program: libc::c_uint, binaryFormat: libc::c_uint, binary: * libc::c_uchar, length: libc::c_int) -> libc::c_void;
+    fn glProgramParameteri(program: libc::c_uint, pname: libc::c_uint, value: libc::c_int) -> libc::c_void;
+    fn glUseProgramStages(pipeline: libc::c_uint, stages: libc::c_uint, program: libc::c_uint) -> libc::c_void;
+    fn glActiveShaderProgram(pipeline: libc::c_uint, program: libc::c_uint) -> libc::c_void;
+    fn glCreateShaderProgramv(type_: libc::c_uint, count: libc::c_int, strings: **libc::c_uchar) -> libc::c_uint;
+    fn glBindProgramPipeline(pipeline: libc::c_uint) -> libc::c_void;
+    fn glDeleteProgramPipelines(n: libc::c_int, pipelines: *libc::c_uint) -> libc::c_void;
+    fn glGenProgramPipelines(n: libc::c_int, pipelines: *libc::c_uint) -> libc::c_void;
+    fn glIsProgramPipeline(pipeline: libc::c_uint) -> libc::c_uchar;
+    fn glGetProgramPipelineiv(pipeline: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glProgramUniform1i(program: libc::c_uint, location: libc::c_int, v0: libc::c_int) -> libc::c_void;
+    fn glProgramUniform1iv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_int) -> libc::c_void;
+    fn glProgramUniform1f(program: libc::c_uint, location: libc::c_int, v0: libc::c_float) -> libc::c_void;
+    fn glProgramUniform1fv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_float) -> libc::c_void;
+    fn glProgramUniform1d(program: libc::c_uint, location: libc::c_int, v0: libc::c_double) -> libc::c_void;
+    fn glProgramUniform1dv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_double) -> libc::c_void;
+    fn glProgramUniform1ui(program: libc::c_uint, location: libc::c_int, v0: libc::c_uint) -> libc::c_void;
+    fn glProgramUniform1uiv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_uint) -> libc::c_void;
+    fn glProgramUniform2i(program: libc::c_uint, location: libc::c_int, v0: libc::c_int, v1: libc::c_int) -> libc::c_void;
+    fn glProgramUniform2iv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_int) -> libc::c_void;
+    fn glProgramUniform2f(program: libc::c_uint, location: libc::c_int, v0: libc::c_float, v1: libc::c_float) -> libc::c_void;
+    fn glProgramUniform2fv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_float) -> libc::c_void;
+    fn glProgramUniform2d(program: libc::c_uint, location: libc::c_int, v0: libc::c_double, v1: libc::c_double) -> libc::c_void;
+    fn glProgramUniform2dv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_double) -> libc::c_void;
+    fn glProgramUniform2ui(program: libc::c_uint, location: libc::c_int, v0: libc::c_uint, v1: libc::c_uint) -> libc::c_void;
+    fn glProgramUniform2uiv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_uint) -> libc::c_void;
+    fn glProgramUniform3i(program: libc::c_uint, location: libc::c_int, v0: libc::c_int, v1: libc::c_int, v2: libc::c_int) -> libc::c_void;
+    fn glProgramUniform3iv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_int) -> libc::c_void;
+    fn glProgramUniform3f(program: libc::c_uint, location: libc::c_int, v0: libc::c_float, v1: libc::c_float, v2: libc::c_float) -> libc::c_void;
+    fn glProgramUniform3fv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_float) -> libc::c_void;
+    fn glProgramUniform3d(program: libc::c_uint, location: libc::c_int, v0: libc::c_double, v1: libc::c_double, v2: libc::c_double) -> libc::c_void;
+    fn glProgramUniform3dv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_double) -> libc::c_void;
+    fn glProgramUniform3ui(program: libc::c_uint, location: libc::c_int, v0: libc::c_uint, v1: libc::c_uint, v2: libc::c_uint) -> libc::c_void;
+    fn glProgramUniform3uiv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_uint) -> libc::c_void;
+    fn glProgramUniform4i(program: libc::c_uint, location: libc::c_int, v0: libc::c_int, v1: libc::c_int, v2: libc::c_int, v3: libc::c_int) -> libc::c_void;
+    fn glProgramUniform4iv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_int) -> libc::c_void;
+    fn glProgramUniform4f(program: libc::c_uint, location: libc::c_int, v0: libc::c_float, v1: libc::c_float, v2: libc::c_float, v3: libc::c_float) -> libc::c_void;
+    fn glProgramUniform4fv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_float) -> libc::c_void;
+    fn glProgramUniform4d(program: libc::c_uint, location: libc::c_int, v0: libc::c_double, v1: libc::c_double, v2: libc::c_double, v3: libc::c_double) -> libc::c_void;
+    fn glProgramUniform4dv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_double) -> libc::c_void;
+    fn glProgramUniform4ui(program: libc::c_uint, location: libc::c_int, v0: libc::c_uint, v1: libc::c_uint, v2: libc::c_uint, v3: libc::c_uint) -> libc::c_void;
+    fn glProgramUniform4uiv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, value: *libc::c_uint) -> libc::c_void;
+    fn glProgramUniformMatrix2fv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glProgramUniformMatrix3fv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glProgramUniformMatrix4fv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glProgramUniformMatrix2dv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glProgramUniformMatrix3dv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glProgramUniformMatrix4dv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glProgramUniformMatrix2x3fv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glProgramUniformMatrix3x2fv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glProgramUniformMatrix2x4fv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glProgramUniformMatrix4x2fv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glProgramUniformMatrix3x4fv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glProgramUniformMatrix4x3fv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_float) -> libc::c_void;
+    fn glProgramUniformMatrix2x3dv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glProgramUniformMatrix3x2dv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glProgramUniformMatrix2x4dv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glProgramUniformMatrix4x2dv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glProgramUniformMatrix3x4dv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glProgramUniformMatrix4x3dv(program: libc::c_uint, location: libc::c_int, count: libc::c_int, transpose: libc::c_uchar, value: *libc::c_double) -> libc::c_void;
+    fn glValidateProgramPipeline(pipeline: libc::c_uint) -> libc::c_void;
+    fn glGetProgramPipelineInfoLog(pipeline: libc::c_uint, bufSize: libc::c_int, length: *libc::c_int, infoLog: *libc::c_uchar) -> libc::c_void;
+    fn glVertexAttribL1d(index: libc::c_uint, x: libc::c_double) -> libc::c_void;
+    fn glVertexAttribL2d(index: libc::c_uint, x: libc::c_double, y: libc::c_double) -> libc::c_void;
+    fn glVertexAttribL3d(index: libc::c_uint, x: libc::c_double, y: libc::c_double, z: libc::c_double) -> libc::c_void;
+    fn glVertexAttribL4d(index: libc::c_uint, x: libc::c_double, y: libc::c_double, z: libc::c_double, w: libc::c_double) -> libc::c_void;
+    fn glVertexAttribL1dv(index: libc::c_uint, v: *libc::c_double) -> libc::c_void;
+    fn glVertexAttribL2dv(index: libc::c_uint, v: *libc::c_double) -> libc::c_void;
+    fn glVertexAttribL3dv(index: libc::c_uint, v: *libc::c_double) -> libc::c_void;
+    fn glVertexAttribL4dv(index: libc::c_uint, v: *libc::c_double) -> libc::c_void;
+    fn glVertexAttribLPointer(index: libc::c_uint, size: libc::c_int, type_: libc::c_uint, stride: libc::c_int, pointer: * libc::c_uchar) -> libc::c_void;
+    fn glGetVertexAttribLdv(index: libc::c_uint, pname: libc::c_uint, params: *libc::c_double) -> libc::c_void;
+    fn glViewportArrayv(first: libc::c_uint, count: libc::c_int, v: *libc::c_float) -> libc::c_void;
+    fn glViewportIndexedf(index: libc::c_uint, x: libc::c_float, y: libc::c_float, w: libc::c_float, h: libc::c_float) -> libc::c_void;
+    fn glViewportIndexedfv(index: libc::c_uint, v: *libc::c_float) -> libc::c_void;
+    fn glScissorArrayv(first: libc::c_uint, count: libc::c_int, v: *libc::c_int) -> libc::c_void;
+    fn glScissorIndexed(index: libc::c_uint, left: libc::c_int, bottom: libc::c_int, width: libc::c_int, height: libc::c_int) -> libc::c_void;
+    fn glScissorIndexedv(index: libc::c_uint, v: *libc::c_int) -> libc::c_void;
+    fn glDepthRangeArrayv(first: libc::c_uint, count: libc::c_int, v: *libc::c_double) -> libc::c_void;
+    fn glDepthRangeIndexed(index: libc::c_uint, n: libc::c_double, f: libc::c_double) -> libc::c_void;
+    fn glGetFloati_v(target: libc::c_uint, index: libc::c_uint, data: *libc::c_float) -> libc::c_void;
+    fn glGetDoublei_v(target: libc::c_uint, index: libc::c_uint, data: *libc::c_double) -> libc::c_void;
+    fn glDrawArraysInstancedBaseInstance(mode: libc::c_uint, first: libc::c_int, count: libc::c_int, primcount: libc::c_int, baseinstance: libc::c_uint) -> libc::c_void;
+    fn glDrawElementsInstancedBaseInstance(mode: libc::c_uint, count: libc::c_int, type_: libc::c_uint, indices: * libc::c_uchar, primcount: libc::c_int, baseinstance: libc::c_uint) -> libc::c_void;
+    fn glDrawElementsInstancedBaseVertexBaseInstance(mode: libc::c_uint, count: libc::c_int, type_: libc::c_uint, indices: * libc::c_uchar, primcount: libc::c_int, basevertex: libc::c_int, baseinstance: libc::c_uint) -> libc::c_void;
+    fn glDrawTransformFeedbackInstanced(mode: libc::c_uint, id: libc::c_uint, primcount: libc::c_int) -> libc::c_void;
+    fn glDrawTransformFeedbackStreamInstanced(mode: libc::c_uint, id: libc::c_uint, stream: libc::c_uint, primcount: libc::c_int) -> libc::c_void;
+    fn glGetInternalformativ(target: libc::c_uint, internalformat: libc::c_uint, pname: libc::c_uint, bufSize: libc::c_int, params: *libc::c_int) -> libc::c_void;
+    fn glGetActiveAtomicCounterBufferiv(program: libc::c_uint, bufferIndex: libc::c_uint, pname: libc::c_uint, params: *libc::c_int) -> libc::c_void;
+    fn glBindImageTexture(unit: libc::c_uint, texture: libc::c_uint, level: libc::c_int, layered: libc::c_uchar, layer: libc::c_int, access: libc::c_uint, format: libc::c_uint) -> libc::c_void;
+    fn glMemoryBarrier(barriers: libc::c_uint) -> libc::c_void;
+    fn glTexStorage1D(target: libc::c_uint, levels: libc::c_int, internalformat: libc::c_uint, width: libc::c_int) -> libc::c_void;
+    fn glTexStorage2D(target: libc::c_uint, levels: libc::c_int, internalformat: libc::c_uint, width: libc::c_int, height: libc::c_int) -> libc::c_void;
+    fn glTexStorage3D(target: libc::c_uint, levels: libc::c_int, internalformat: libc::c_uint, width: libc::c_int, height: libc::c_int, depth: libc::c_int) -> libc::c_void;
+}
+fn glClearColor(red: float, green: float, blue: float, alpha: float) -> libc::c_void unsafe {
+    ret GL::glClearColor(red as libc::c_float, green as libc::c_float, blue as libc::c_float, alpha as libc::c_float);
+}
+fn glClear(mask: uint) -> libc::c_void unsafe {
+    ret GL::glClear(mask as libc::c_uint);
+}
+fn glIndexMask(mask: uint) -> libc::c_void unsafe {
+    ret GL::glIndexMask(mask as libc::c_uint);
+}
+fn glColorMask(red: uint, green: uint, blue: uint, alpha: uint) -> libc::c_void unsafe {
+    ret GL::glColorMask(red as libc::c_uchar, green as libc::c_uchar, blue as libc::c_uchar, alpha as libc::c_uchar);
+}
+fn glAlphaFunc(func: uint, ref: float) -> libc::c_void unsafe {
+    ret GL::glAlphaFunc(func as libc::c_uint, ref as libc::c_float);
+}
+fn glBlendFunc(sfactor: uint, dfactor: uint) -> libc::c_void unsafe {
+    ret GL::glBlendFunc(sfactor as libc::c_uint, dfactor as libc::c_uint);
+}
+fn glLogicOp(opcode: uint) -> libc::c_void unsafe {
+    ret GL::glLogicOp(opcode as libc::c_uint);
+}
+fn glCullFace(mode: uint) -> libc::c_void unsafe {
+    ret GL::glCullFace(mode as libc::c_uint);
+}
+fn glFrontFace(mode: uint) -> libc::c_void unsafe {
+    ret GL::glFrontFace(mode as libc::c_uint);
+}
+fn glPointSize(size: float) -> libc::c_void unsafe {
+    ret GL::glPointSize(size as libc::c_float);
+}
+fn glLineWidth(width: float) -> libc::c_void unsafe {
+    ret GL::glLineWidth(width as libc::c_float);
+}
+fn glLineStipple(factor: int, pattern: uint) -> libc::c_void unsafe {
+    ret GL::glLineStipple(factor as libc::c_int, pattern as libc::c_ushort);
+}
+fn glPolygonMode(face: uint, mode: uint) -> libc::c_void unsafe {
+    ret GL::glPolygonMode(face as libc::c_uint, mode as libc::c_uint);
+}
+fn glPolygonOffset(factor: float, units: float) -> libc::c_void unsafe {
+    ret GL::glPolygonOffset(factor as libc::c_float, units as libc::c_float);
+}
+fn glPolygonStipple(mask: str) -> libc::c_void unsafe {
     let mask_c_str = str::as_c_str(mask) { |mask_| mask_ };
-    ret GL::glPolygonStipple(mask_c_str as *u8);
-}
-fn glGetPolygonStipple(mask: str) -> () unsafe {
+    ret GL::glPolygonStipple(mask_c_str as *libc::c_uchar);
+}
+fn glGetPolygonStipple(mask: str) -> libc::c_void unsafe {
     let mask_c_str = str::as_c_str(mask) { |mask_| mask_ };
-    ret GL::glGetPolygonStipple(mask_c_str as *u8);
-}
-fn glEdgeFlag(flag: uint) -> () unsafe {
-    ret GL::glEdgeFlag(flag as u8);
-}
-fn glEdgeFlagv(flag: str) -> () unsafe {
+    ret GL::glGetPolygonStipple(mask_c_str as *libc::c_uchar);
+}
+fn glEdgeFlag(flag: uint) -> libc::c_void unsafe {
+    ret GL::glEdgeFlag(flag as libc::c_uchar);
+}
+fn glEdgeFlagv(flag: str) -> libc::c_void unsafe {
     let flag_c_str = str::as_c_str(flag) { |flag_| flag_ };
-    ret GL::glEdgeFlagv(flag_c_str as *u8);
-}
-fn glScissor(x: int, y: int, width: int, height: int) -> () unsafe {
-    ret GL::glScissor(x as i32, y as i32, width as i32, height as i32);
-}
-fn glClipPlane(plane: uint, equation: *f64) -> () unsafe {
-    ret GL::glClipPlane(plane as u32, equation);
-}
-fn glGetClipPlane(plane: uint, equation: *f64) -> () unsafe {
-    ret GL::glGetClipPlane(plane as u32, equation);
-}
-fn glDrawBuffer(mode: uint) -> () unsafe {
-    ret GL::glDrawBuffer(mode as u32);
-}
-fn glReadBuffer(mode: uint) -> () unsafe {
-    ret GL::glReadBuffer(mode as u32);
-}
-fn glEnable(cap: uint) -> () unsafe {
-    ret GL::glEnable(cap as u32);
-}
-fn glDisable(cap: uint) -> () unsafe {
-    ret GL::glDisable(cap as u32);
+    ret GL::glEdgeFlagv(flag_c_str as *libc::c_uchar);
+}
+fn glScissor(x: int, y: int, width: int, height: int) -> libc::c_void unsafe {
+    ret GL::glScissor(x as libc::c_int, y as libc::c_int, width as libc::c_int, height as libc::c_int);
+}
+fn glClipPlane(plane: uint, equation: *libc::c_double) -> libc::c_void unsafe {
+    ret GL::glClipPlane(plane as libc::c_uint, equation);
+}
+fn glGetClipPlane(plane: uint, equation: *libc::c_double) -> libc::c_void unsafe {
+    ret GL::glGetClipPlane(plane as libc::c_uint, equation);
+}
+fn glDrawBuffer(mode: uint) -> libc::c_void unsafe {
+    ret GL::glDrawBuffer(mode as libc::c_uint);
+}
+fn glReadBuffer(mode: uint) -> libc::c_void unsafe {
+    ret GL::glReadBuffer(mode as libc::c_uint);
+}
+fn glEnable(cap: uint) -> libc::c_void unsafe {
+    ret GL::glEnable(cap as libc::c_uint);
+}
+fn glDisable(cap: uint) -> libc::c_void unsafe {
+    ret GL::glDisable(cap as libc::c_uint);
 }
 fn glIsEnabled(cap: uint) -> uint unsafe {
-    ret GL::glIsEnabled(cap as u32) as uint;
-}
-fn glEnableClientState(cap: uint) -> () unsafe {
-    ret GL::glEnableClientState(cap as u32);
-}
-fn glGetDoublev(pname: uint, params: *f64) -> () unsafe {
-    ret GL::glGetDoublev(pname as u32, params);
-}
-fn glGetFloatv(pname: uint, params: *f32) -> () unsafe {
-    ret GL::glGetFloatv(pname as u32, params);
-}
-fn glGetIntegerv(pname: uint, params: *i32) -> () unsafe {
-    ret GL::glGetIntegerv(pname as u32, params);
-}
-fn glPushAttrib(mask: uint) -> () unsafe {
-    ret GL::glPushAttrib(mask as u32);
-}
-fn glPopAttrib() -> () unsafe {
+    ret GL::glIsEnabled(cap as libc::c_uint) as uint;
+}
+fn glEnableClientState(cap: uint) -> libc::c_void unsafe {
+    ret GL::glEnableClientState(cap as libc::c_uint);
+}
+fn glGetDoublev(pname: uint, params: *libc::c_double) -> libc::c_void unsafe {
+    ret GL::glGetDoublev(pname as libc::c_uint, params);
+}
+fn glGetFloatv(pname: uint, params: *libc::c_float) -> libc::c_void unsafe {
+    ret GL::glGetFloatv(pname as libc::c_uint, params);
+}
+fn glGetIntegerv(pname: uint, params: *libc::c_int) -> libc::c_void unsafe {
+    ret GL::glGetIntegerv(pname as libc::c_uint, params);
+}
+fn glPushAttrib(mask: uint) -> libc::c_void unsafe {
+    ret GL::glPushAttrib(mask as libc::c_uint);
+}
+fn glPopAttrib() -> libc::c_void unsafe {