Fix GL prototypes on MacOSX.
authorJosé Fonseca <jose.r.fonseca@gmail.com>
Wed, 20 Apr 2011 20:09:28 +0000 (21:09 +0100)
committerJosé Fonseca <jose.r.fonseca@gmail.com>
Wed, 20 Apr 2011 20:09:28 +0000 (21:09 +0100)
glapi.py
retrace.py

index a2bf93e..2da980b 100644 (file)
--- a/glapi.py
+++ b/glapi.py
@@ -33,6 +33,8 @@ cases correctly.
 """
 
 
+import platform
+
 from stdapi import *
 from glenum import *
 
@@ -87,8 +89,13 @@ GLfragmentShaderATI = Handle("fragmentShaderATI", GLuint)
 GLvertexArray = Handle("vertexArrayAPPLE", GLuint)
 GLregion = Handle("region", GLuint)
 
-# Some functions take GLenum disguised as GLint
-GLenum_int = Alias("GLint", GLenum)
+# Some functions take GLenum disguised as GLint.  Apple noticed and fixed it in
+# the gl.h header.  Regardless, C++ typechecking rules force the wrappers to
+# match the prototype precisely.
+if platform.system() == 'Darwin':
+    GLenum_int = GLenum
+else:
+    GLenum_int = Alias("GLint", GLenum)
 
 GLsync_ = Opaque("GLsync")
 GLsync = Handle("sync", GLsync_)
@@ -541,8 +548,8 @@ glapi.add_functions([
 
     # GL_VERSION_1_4
     GlFunction(Void, "glBlendFuncSeparate", [(GLenum, "sfactorRGB"), (GLenum, "dfactorRGB"), (GLenum, "sfactorAlpha"), (GLenum, "dfactorAlpha")]),
-    GlFunction(Void, "glMultiDrawArrays", [(GLenum_mode, "mode"), (OpaquePointer(GLint), "first"), (OpaquePointer(GLsizei), "count"), (GLsizei, "primcount")]),
-    GlFunction(Void, "glMultiDrawElements", [(GLenum_mode, "mode"), (Const(Array(GLsizei, "primcount")), "count"), (GLenum, "type"), (Array(Const(Const(OpaquePointer(GLvoid))), "primcount"), "indices"), (GLsizei, "primcount")]),
+    GlFunction(Void, "glMultiDrawArrays", [(GLenum_mode, "mode"), (Const(Array(GLint, "primcount")), "first"), (Const(Array(GLsizei, "primcount")), "count"), (GLsizei, "primcount")]),
+    GlFunction(Void, "glMultiDrawElements", [(GLenum_mode, "mode"), (Const(Array(GLsizei, "primcount")), "count"), (GLenum, "type"), (Array(Opaque("const GLvoid *"), "primcount"), "indices"), (GLsizei, "primcount")]),
     GlFunction(Void, "glPointParameterf", [(GLenum, "pname"), (GLfloat, "param")]),
     GlFunction(Void, "glPointParameterfv", [(GLenum, "pname"), (Const(Array(GLfloat, "__glPointParameterfv_size(pname)")), "params")]),
     GlFunction(Void, "glPointParameteri", [(GLenum, "pname"), (GLint, "param")]),
index 4f45055..4169b26 100644 (file)
@@ -37,10 +37,7 @@ class ConstRemover(stdapi.Rebuilder):
         return const.type
 
     def visit_opaque(self, opaque):
-        expr = opaque.expr
-        if expr.startswith('const '):
-            expr = expr[6:]
-        return stdapi.Opaque(expr)
+        return opaque
 
 
 def handle_entry(handle, value):