]> git.tdb.fi Git - libs/gl.git/blobdiff - scripts/extgen.py
Function pointer typedefs for core functions are not available everywhere
[libs/gl.git] / scripts / extgen.py
index d6727123d97cb842a5836ea1b7d2f4a901396962..4ccf27a676545cc3e50914e1e6b583a36afcee9b 100755 (executable)
@@ -23,6 +23,7 @@ bp_ext = None
 class Function:
        def __init__(self, name):
                self.name = name
+               self.typedef = None
                self.version = None
                self.category = None
                self.vectorequiv = None
@@ -89,12 +90,15 @@ funcs.sort(key=(lambda f: f.name))
 
 for f in funcs:
        if f.extfunc:
+               f.typedef = "PFNGL%sPROC"%f.extfunc.name.upper()
                if not ver:
                        ver = f.version
                if not f.category.startswith("VERSION_"):
                        bp_ext = f.category
-       if not f.extfunc and not f.name.endswith(exttype):
-               bp_ext = f.category
+       else:
+               f.typedef = "PFNGL%sPROC"%f.name.upper()
+               if not f.name.endswith(exttype):
+                       bp_ext = f.category
 
 if ver:
        ver = map(int, ver.split('.'))
@@ -115,7 +119,7 @@ namespace GL {
 if funcs:
        out.write("\n")
 for f in funcs:
-       out.write("extern PFNGL%sPROC gl%s;\n"%(f.name.upper(), f.name))
+       out.write("extern %s gl%s;\n"%(f.typedef, f.name))
 
 out.write("\nextern Extension %s;\n"%ext)
 
@@ -137,7 +141,7 @@ namespace GL {
 if funcs:
        out.write("\n")
 for f in funcs:
-       out.write("PFNGL%sPROC gl%s = 0;\n"%(f.name.upper(), f.name))
+       out.write("%s gl%s = 0;\n"%(f.typedef, f.name))
 
 out.write("\nExtension::SupportLevel init_%s()\n{\n"%ext.lower())
 if ver:
@@ -146,7 +150,7 @@ if ver:
                out.write(" || is_supported(\"GL_%s\")"%bp_ext)
        out.write(")\n\t{\n")
        for f in funcs:
-               out.write("\t\tgl%s = reinterpret_cast<PFNGL%sPROC>(get_proc_address(\"gl%s\"));\n"%(f.name, f.name.upper(), f.name))
+               out.write("\t\tgl%s = reinterpret_cast<%s>(get_proc_address(\"gl%s\"));\n"%(f.name, f.typedef, f.name))
        out.write("\t\treturn Extension::CORE;\n")
        out.write("\t}\n")
 if ext!=bp_ext:
@@ -155,7 +159,7 @@ if ext!=bp_ext:
                n = f.name
                if f.extfunc:
                        n = f.extfunc.name
-               out.write("\t\tgl%s = reinterpret_cast<PFNGL%sPROC>(get_proc_address(\"gl%s\"));\n"%(f.name, f.name.upper(), n))
+               out.write("\t\tgl%s = reinterpret_cast<%s>(get_proc_address(\"gl%s\"));\n"%(f.name, f.typedef, n))
        out.write("\t\treturn Extension::EXTENSION;\n")
        out.write("\t}\n")
 out.write("\treturn Extension::UNSUPPORTED;\n")