Run ruff format against the whole source tree

Only two files that needed changes anyway, might as well enforce this.

Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/2327>
(cherry picked from commit 6aa23cf642)

Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Peter Hutterer 2026-09-17 10:14:12 +10:00 • committed by Enrico Weigelt
commit c3b028aee8

View file

@ -29,71 +29,74 @@ from reg import *
# Default input / log files # Default input / log files
errFilename = None errFilename = None
diagFilename = 'diag.txt' diagFilename = "diag.txt"
regFilename = 'gl.xml' regFilename = "gl.xml"
outFilename = 'gen_gl_wrappers.c' outFilename = "gen_gl_wrappers.c"
protect=True protect = True
prefix="gl" prefix = "gl"
preresolve=False preresolve = False
wrapper=False wrapper = False
shim=False shim = False
thunk=False thunk = False
thunkdefs=False thunkdefs = False
staticwrappers=False staticwrappers = False
nodebug=False nodebug = False
# list of WGL extension functions we use # list of WGL extension functions we use
used_wgl_ext_fns = {key: 1 for key in [ used_wgl_ext_fns = {
"wglSwapIntervalEXT", key: 1
"wglGetExtensionsStringARB", for key in [
"wglDestroyPbufferARB", "wglSwapIntervalEXT",
"wglGetPbufferDCARB", "wglGetExtensionsStringARB",
"wglReleasePbufferDCARB", "wglDestroyPbufferARB",
"wglCreatePbufferARB", "wglGetPbufferDCARB",
"wglMakeContextCurrentARB", "wglReleasePbufferDCARB",
"wglChoosePixelFormatARB", "wglCreatePbufferARB",
"wglGetPixelFormatAttribivARB", "wglMakeContextCurrentARB",
"wglGetPixelFormatAttribivARB" "wglChoosePixelFormatARB",
]} "wglGetPixelFormatAttribivARB",
"wglGetPixelFormatAttribivARB",
]
}
if __name__ == '__main__': if __name__ == "__main__":
i = 1 i = 1
while (i < len(sys.argv)): while i < len(sys.argv):
arg = sys.argv[i] arg = sys.argv[i]
i = i + 1 i = i + 1
if (arg == '-noprotect'): if arg == "-noprotect":
print('Disabling inclusion protection in output headers', file=sys.stderr) print("Disabling inclusion protection in output headers", file=sys.stderr)
protect = False protect = False
elif (arg == '-registry'): elif arg == "-registry":
regFilename = sys.argv[i] regFilename = sys.argv[i]
i = i+1 i = i + 1
print('Using registry', regFilename, file=sys.stderr) print("Using registry", regFilename, file=sys.stderr)
elif (arg == '-outfile'): elif arg == "-outfile":
outFilename = sys.argv[i] outFilename = sys.argv[i]
i = i+1 i = i + 1
elif (arg == '-preresolve'): elif arg == "-preresolve":
preresolve=True preresolve = True
elif (arg == '-wrapper'): elif arg == "-wrapper":
wrapper=True wrapper = True
elif (arg == '-shim'): elif arg == "-shim":
shim=True shim = True
elif (arg == '-thunk'): elif arg == "-thunk":
thunk=True thunk = True
elif (arg == '-thunkdefs'): elif arg == "-thunkdefs":
thunkdefs=True thunkdefs = True
elif (arg == '-staticwrappers'): elif arg == "-staticwrappers":
staticwrappers=True staticwrappers = True
elif (arg == '-prefix'): elif arg == "-prefix":
prefix = sys.argv[i] prefix = sys.argv[i]
i = i+1 i = i + 1
elif (arg == '-nodebug'): elif arg == "-nodebug":
nodebug = True nodebug = True
elif (arg[0:1] == '-'): elif arg[0:1] == "-":
print('Unrecognized argument:', arg, file=sys.stderr) print("Unrecognized argument:", arg, file=sys.stderr)
exit(1) exit(1)
print('Generating', outFilename, file=sys.stderr) print("Generating", outFilename, file=sys.stderr)
# Load & parse registry # Load & parse registry
reg = Registry() reg = Registry()
@ -101,124 +104,145 @@ tree = etree.parse(regFilename)
reg.loadElementTree(tree) reg.loadElementTree(tree)
if shim: if shim:
versions = '1\.[012]' versions = "1\.[012]"
else: else:
versions = '.*' versions = ".*"
genOpts = CGeneratorOptions( genOpts = CGeneratorOptions(
apiname = prefix, apiname=prefix,
profile = 'compatibility', profile="compatibility",
versions = versions, versions=versions,
emitversions = versions, emitversions=versions,
defaultExtensions = prefix, # Default extensions for GL defaultExtensions=prefix, # Default extensions for GL
protectFile = protect, protectFile=protect,
protectFeature = protect, protectFeature=protect,
protectProto = protect, protectProto=protect,
) )
# create error/warning & diagnostic files # create error/warning & diagnostic files
if (errFilename): if errFilename:
errWarn = open(errFilename,'w') errWarn = open(errFilename, "w")
else: else:
errWarn = sys.stderr errWarn = sys.stderr
diag = open(diagFilename, 'w') diag = open(diagFilename, "w")
def ParseCmdRettype(cmd): def ParseCmdRettype(cmd):
proto=noneStr(cmd.elem.find('proto')) proto = noneStr(cmd.elem.find("proto"))
rettype=noneStr(proto.text) rettype = noneStr(proto.text)
if rettype.lower()!="void ": if rettype.lower() != "void ":
plist = ([t for t in proto.itertext()]) plist = [t for t in proto.itertext()]
rettype = ''.join(plist[:-1]) rettype = "".join(plist[:-1])
rettype=rettype.strip() rettype = rettype.strip()
return rettype return rettype
def ParseCmdParams(cmd): def ParseCmdParams(cmd):
params = cmd.elem.findall('param') params = cmd.elem.findall("param")
plist=[] plist = []
for param in params: for param in params:
# construct the formal parameter definition from ptype and name # construct the formal parameter definition from ptype and name
# elements, also using any text found around these in the # elements, also using any text found around these in the
# param element, in the order it appears in the document # param element, in the order it appears in the document
paramtype = '' paramtype = ""
# also extract the formal parameter name from the name element # also extract the formal parameter name from the name element
paramname = '' paramname = ""
for t in param.iter(): for t in param.iter():
if t.tag == 'ptype' or t.tag == 'param': if t.tag == "ptype" or t.tag == "param":
paramtype = paramtype + noneStr(t.text) paramtype = paramtype + noneStr(t.text)
if t.tag == 'name': if t.tag == "name":
paramname = t.text + '_' paramname = t.text + "_"
paramtype = paramtype + ' ' + paramname paramtype = paramtype + " " + paramname
if t.tail is not None: if t.tail is not None:
paramtype = paramtype + t.tail.strip() paramtype = paramtype + t.tail.strip()
plist.append((paramtype, paramname)) plist.append((paramtype, paramname))
return plist return plist
class PreResolveOutputGenerator(OutputGenerator): class PreResolveOutputGenerator(OutputGenerator):
def __init__(self, def __init__(self, errFile=sys.stderr, warnFile=sys.stderr, diagFile=sys.stdout):
errFile = sys.stderr,
warnFile = sys.stderr,
diagFile = sys.stdout):
OutputGenerator.__init__(self, errFile, warnFile, diagFile) OutputGenerator.__init__(self, errFile, warnFile, diagFile)
self.wrappers={} self.wrappers = {}
def beginFile(self, genOpts): def beginFile(self, genOpts):
self.outFile.write('/* Automatically generated from %s - DO NOT EDIT */\n\n'%regFilename) self.outFile.write(
"/* Automatically generated from %s - DO NOT EDIT */\n\n" % regFilename
)
def endFile(self): def endFile(self):
self.outFile.write('\nvoid ' + prefix + 'ResolveExtensionProcs(void)\n{\n') self.outFile.write("\nvoid " + prefix + "ResolveExtensionProcs(void)\n{\n")
for funcname in self.wrappers.keys(): for funcname in self.wrappers.keys():
self.outFile.write( ' PRERESOLVE(PFN' + funcname.upper() + 'PROC, "' + funcname + '");\n') self.outFile.write(
self.outFile.write('}\n\n') " PRERESOLVE(PFN" + funcname.upper() + 'PROC, "' + funcname + '");\n'
)
self.outFile.write("}\n\n")
def beginFeature(self, interface, emit): def beginFeature(self, interface, emit):
OutputGenerator.beginFeature(self, interface, emit) OutputGenerator.beginFeature(self, interface, emit)
def endFeature(self): def endFeature(self):
OutputGenerator.endFeature(self) OutputGenerator.endFeature(self)
def genType(self, typeinfo, name): def genType(self, typeinfo, name):
OutputGenerator.genType(self, typeinfo, name) OutputGenerator.genType(self, typeinfo, name)
def genEnum(self, enuminfo, name): def genEnum(self, enuminfo, name):
OutputGenerator.genEnum(self, enuminfo, name) OutputGenerator.genEnum(self, enuminfo, name)
def genCmd(self, cmd, name): def genCmd(self, cmd, name):
OutputGenerator.genCmd(self, cmd, name) OutputGenerator.genCmd(self, cmd, name)
if prefix == 'wgl' and not name in used_wgl_ext_fns: if prefix == "wgl" and not name in used_wgl_ext_fns:
return return
self.outFile.write('RESOLVE_DECL(PFN' + name.upper() + 'PROC);\n') self.outFile.write("RESOLVE_DECL(PFN" + name.upper() + "PROC);\n")
self.wrappers[name]=1 self.wrappers[name] = 1
class WrapperOutputGenerator(OutputGenerator): class WrapperOutputGenerator(OutputGenerator):
def __init__(self, def __init__(self, errFile=sys.stderr, warnFile=sys.stderr, diagFile=sys.stdout):
errFile = sys.stderr,
warnFile = sys.stderr,
diagFile = sys.stdout):
OutputGenerator.__init__(self, errFile, warnFile, diagFile) OutputGenerator.__init__(self, errFile, warnFile, diagFile)
def beginFile(self, genOpts): def beginFile(self, genOpts):
self.outFile.write('/* Automatically generated from %s - DO NOT EDIT */\n\n'%regFilename) self.outFile.write(
"/* Automatically generated from %s - DO NOT EDIT */\n\n" % regFilename
)
def endFile(self): def endFile(self):
pass pass
def beginFeature(self, interface, emit): def beginFeature(self, interface, emit):
OutputGenerator.beginFeature(self, interface, emit) OutputGenerator.beginFeature(self, interface, emit)
self.OldVersion = self.featureName.startswith('GL_VERSION_1_0') or self.featureName.startswith('GL_VERSION_1_1') self.OldVersion = self.featureName.startswith(
"GL_VERSION_1_0"
) or self.featureName.startswith("GL_VERSION_1_1")
def endFeature(self): def endFeature(self):
OutputGenerator.endFeature(self) OutputGenerator.endFeature(self)
def genType(self, typeinfo, name): def genType(self, typeinfo, name):
OutputGenerator.genType(self, typeinfo, name) OutputGenerator.genType(self, typeinfo, name)
def genEnum(self, enuminfo, name): def genEnum(self, enuminfo, name):
OutputGenerator.genEnum(self, enuminfo, name) OutputGenerator.genEnum(self, enuminfo, name)
def genCmd(self, cmd, name): def genCmd(self, cmd, name):
OutputGenerator.genCmd(self, cmd, name) OutputGenerator.genCmd(self, cmd, name)
if prefix == 'wgl' and not name in used_wgl_ext_fns: if prefix == "wgl" and not name in used_wgl_ext_fns:
return return
rettype=ParseCmdRettype(cmd) rettype = ParseCmdRettype(cmd)
if staticwrappers: self.outFile.write("static ") if staticwrappers:
self.outFile.write("%s %sWrapper("%(rettype, name)) self.outFile.write("static ")
plist=ParseCmdParams(cmd) self.outFile.write("%s %sWrapper(" % (rettype, name))
Comma="" plist = ParseCmdParams(cmd)
Comma = ""
if len(plist): if len(plist):
for ptype, pname in plist: for ptype, pname in plist:
self.outFile.write("%s%s"%(Comma, ptype)) self.outFile.write("%s%s" % (Comma, ptype))
Comma=", " Comma = ", "
else: else:
self.outFile.write("void") self.outFile.write("void")
@ -227,78 +251,100 @@ class WrapperOutputGenerator(OutputGenerator):
# for GL 1.0 and 1.1 functions, generate stdcall wrappers which call the function directly # for GL 1.0 and 1.1 functions, generate stdcall wrappers which call the function directly
if self.OldVersion: if self.OldVersion:
if not nodebug: if not nodebug:
self.outFile.write(' if (glxWinDebugSettings.enable%scallTrace) ErrorF("%s\\n");\n'%(prefix.upper(), name)) self.outFile.write(
' if (glxWinDebugSettings.enable%scallTrace) ErrorF("%s\\n");\n'
% (prefix.upper(), name)
)
self.outFile.write(" glWinDirectProcCalls++;\n") self.outFile.write(" glWinDirectProcCalls++;\n")
self.outFile.write("\n") self.outFile.write("\n")
if rettype.lower()=="void": if rettype.lower() == "void":
self.outFile.write(" %s( "%(name)) self.outFile.write(" %s( " % (name))
else: else:
self.outFile.write(" return %s( "%(name)) self.outFile.write(" return %s( " % (name))
Comma="" Comma = ""
for ptype, pname in plist: for ptype, pname in plist:
self.outFile.write("%s%s"%(Comma, pname)) self.outFile.write("%s%s" % (Comma, pname))
Comma=", " Comma = ", "
# for GL 1.2+ functions, generate stdcall wrappers which use wglGetProcAddress() # for GL 1.2+ functions, generate stdcall wrappers which use wglGetProcAddress()
else: else:
if rettype.lower()=="void": if rettype.lower() == "void":
self.outFile.write(' RESOLVE(PFN%sPROC, "%s");\n'%(name.upper(), name)) self.outFile.write(
' RESOLVE(PFN%sPROC, "%s");\n' % (name.upper(), name)
)
if not nodebug: if not nodebug:
self.outFile.write("\n") self.outFile.write("\n")
self.outFile.write(' if (glxWinDebugSettings.enable%scallTrace) ErrorF("%s\\n");\n'%(prefix.upper(), name)) self.outFile.write(
' if (glxWinDebugSettings.enable%scallTrace) ErrorF("%s\\n");\n'
% (prefix.upper(), name)
)
self.outFile.write("\n") self.outFile.write("\n")
self.outFile.write(" RESOLVED_PROC(PFN%sPROC)( """%(name.upper())) self.outFile.write(" RESOLVED_PROC(PFN%sPROC)( " % (name.upper()))
else: else:
self.outFile.write(' RESOLVE_RET(PFN%sPROC, "%s", FALSE);\n'%(name.upper(), name)) self.outFile.write(
' RESOLVE_RET(PFN%sPROC, "%s", FALSE);\n' % (name.upper(), name)
)
if not nodebug: if not nodebug:
self.outFile.write("\n") self.outFile.write("\n")
self.outFile.write(' if (glxWinDebugSettings.enable%scallTrace) ErrorF("%s\\n");\n'%(prefix.upper(), name)) self.outFile.write(
' if (glxWinDebugSettings.enable%scallTrace) ErrorF("%s\\n");\n'
% (prefix.upper(), name)
)
self.outFile.write("\n") self.outFile.write("\n")
self.outFile.write(" return RESOLVED_PROC(PFN%sPROC)("%(name.upper())) self.outFile.write(
" return RESOLVED_PROC(PFN%sPROC)(" % (name.upper())
)
Comma="" Comma = ""
for ptype, pname in plist: for ptype, pname in plist:
self.outFile.write("%s%s"%(Comma, pname)) self.outFile.write("%s%s" % (Comma, pname))
Comma=", " Comma = ", "
self.outFile.write(" );\n}\n\n") self.outFile.write(" );\n}\n\n")
class ThunkOutputGenerator(OutputGenerator): class ThunkOutputGenerator(OutputGenerator):
def __init__(self, def __init__(self, errFile=sys.stderr, warnFile=sys.stderr, diagFile=sys.stdout):
errFile = sys.stderr,
warnFile = sys.stderr,
diagFile = sys.stdout):
OutputGenerator.__init__(self, errFile, warnFile, diagFile) OutputGenerator.__init__(self, errFile, warnFile, diagFile)
def beginFile(self, genOpts): def beginFile(self, genOpts):
self.outFile.write('/* Automatically generated from %s - DO NOT EDIT */\n\n'%regFilename) self.outFile.write(
"/* Automatically generated from %s - DO NOT EDIT */\n\n" % regFilename
)
def endFile(self): def endFile(self):
pass pass
def beginFeature(self, interface, emit): def beginFeature(self, interface, emit):
OutputGenerator.beginFeature(self, interface, emit) OutputGenerator.beginFeature(self, interface, emit)
self.OldVersion = (self.featureName in ['GL_VERSION_1_0', 'GL_VERSION_1_1']) self.OldVersion = self.featureName in ["GL_VERSION_1_0", "GL_VERSION_1_1"]
def endFeature(self): def endFeature(self):
OutputGenerator.endFeature(self) OutputGenerator.endFeature(self)
def genType(self, typeinfo, name): def genType(self, typeinfo, name):
OutputGenerator.genType(self, typeinfo, name) OutputGenerator.genType(self, typeinfo, name)
def genEnum(self, enuminfo, name): def genEnum(self, enuminfo, name):
OutputGenerator.genEnum(self, enuminfo, name) OutputGenerator.genEnum(self, enuminfo, name)
def genCmd(self, cmd, name): def genCmd(self, cmd, name):
OutputGenerator.genCmd(self, cmd, name) OutputGenerator.genCmd(self, cmd, name)
rettype=ParseCmdRettype(cmd) rettype = ParseCmdRettype(cmd)
self.outFile.write("%s %sWrapper("%(rettype, name)) self.outFile.write("%s %sWrapper(" % (rettype, name))
plist=ParseCmdParams(cmd) plist = ParseCmdParams(cmd)
Comma="" Comma = ""
if len(plist): if len(plist):
for ptype, pname in plist: for ptype, pname in plist:
self.outFile.write("%s%s"%(Comma, ptype)) self.outFile.write("%s%s" % (Comma, ptype))
Comma=", " Comma = ", "
else: else:
self.outFile.write("void") self.outFile.write("void")
@ -306,75 +352,104 @@ class ThunkOutputGenerator(OutputGenerator):
# for GL 1.0 and 1.1 functions, generate stdcall thunk wrappers which call the function directly # for GL 1.0 and 1.1 functions, generate stdcall thunk wrappers which call the function directly
if self.OldVersion: if self.OldVersion:
if rettype.lower()=="void": if rettype.lower() == "void":
self.outFile.write(" %s( "%(name)) self.outFile.write(" %s( " % (name))
else: else:
self.outFile.write(" return %s( "%(name)) self.outFile.write(" return %s( " % (name))
Comma="" Comma = ""
for ptype, pname in plist: for ptype, pname in plist:
self.outFile.write("%s%s"%(Comma, pname)) self.outFile.write("%s%s" % (Comma, pname))
Comma=", " Comma = ", "
# for GL 1.2+ functions, generate wrappers which use wglGetProcAddress() # for GL 1.2+ functions, generate wrappers which use wglGetProcAddress()
else: else:
if rettype.lower()=="void": if rettype.lower() == "void":
self.outFile.write(' RESOLVE(PFN%sPROC, "%s");\n'%(name.upper(), name)) self.outFile.write(
self.outFile.write(" RESOLVED_PROC(PFN%sPROC)( """%(name.upper())) ' RESOLVE(PFN%sPROC, "%s");\n' % (name.upper(), name)
)
self.outFile.write(" RESOLVED_PROC(PFN%sPROC)( " % (name.upper()))
else: else:
self.outFile.write(' RESOLVE_RET(PFN%sPROC, "%s", FALSE);\n'%(name.upper(), name)) self.outFile.write(
self.outFile.write(" return RESOLVED_PROC(PFN%sPROC)("%(name.upper())) ' RESOLVE_RET(PFN%sPROC, "%s", FALSE);\n' % (name.upper(), name)
)
self.outFile.write(
" return RESOLVED_PROC(PFN%sPROC)(" % (name.upper())
)
Comma="" Comma = ""
for ptype, pname in plist: for ptype, pname in plist:
self.outFile.write("%s%s"%(Comma, pname)) self.outFile.write("%s%s" % (Comma, pname))
Comma=", " Comma = ", "
self.outFile.write(" );\n}\n\n") self.outFile.write(" );\n}\n\n")
class ThunkDefsOutputGenerator(OutputGenerator): class ThunkDefsOutputGenerator(OutputGenerator):
def __init__(self, def __init__(self, errFile=sys.stderr, warnFile=sys.stderr, diagFile=sys.stdout):
errFile = sys.stderr,
warnFile = sys.stderr,
diagFile = sys.stdout):
OutputGenerator.__init__(self, errFile, warnFile, diagFile) OutputGenerator.__init__(self, errFile, warnFile, diagFile)
def beginFile(self, genOpts): def beginFile(self, genOpts):
self.outFile.write("EXPORTS\n"); # this must be the first line for libtool to realize this is a .def file self.outFile.write(
self.outFile.write('; Automatically generated from %s - DO NOT EDIT\n\n'%regFilename) "EXPORTS\n"
) # this must be the first line for libtool to realize this is a .def file
self.outFile.write(
"; Automatically generated from %s - DO NOT EDIT\n\n" % regFilename
)
def endFile(self): def endFile(self):
pass pass
def beginFeature(self, interface, emit): def beginFeature(self, interface, emit):
OutputGenerator.beginFeature(self, interface, emit) OutputGenerator.beginFeature(self, interface, emit)
def endFeature(self): def endFeature(self):
OutputGenerator.endFeature(self) OutputGenerator.endFeature(self)
def genType(self, typeinfo, name): def genType(self, typeinfo, name):
OutputGenerator.genType(self, typeinfo, name) OutputGenerator.genType(self, typeinfo, name)
def genEnum(self, enuminfo, name): def genEnum(self, enuminfo, name):
OutputGenerator.genEnum(self, enuminfo, name) OutputGenerator.genEnum(self, enuminfo, name)
def genCmd(self, cmd, name): def genCmd(self, cmd, name):
OutputGenerator.genCmd(self, cmd, name) OutputGenerator.genCmd(self, cmd, name)
# export the wrapper function with the name of the function it wraps # export the wrapper function with the name of the function it wraps
self.outFile.write("%s = %sWrapper\n"%(name, name)) self.outFile.write("%s = %sWrapper\n" % (name, name))
class ShimOutputGenerator(OutputGenerator): class ShimOutputGenerator(OutputGenerator):
def __init__(self, def __init__(self, errFile=sys.stderr, warnFile=sys.stderr, diagFile=sys.stdout):
errFile = sys.stderr,
warnFile = sys.stderr,
diagFile = sys.stdout):
OutputGenerator.__init__(self, errFile, warnFile, diagFile) OutputGenerator.__init__(self, errFile, warnFile, diagFile)
def beginFile(self, genOpts): def beginFile(self, genOpts):
self.outFile.write('/* Automatically generated from %s - DO NOT EDIT */\n\n'%regFilename) self.outFile.write(
"/* Automatically generated from %s - DO NOT EDIT */\n\n" % regFilename
)
def endFile(self): def endFile(self):
pass pass
def beginFeature(self, interface, emit): def beginFeature(self, interface, emit):
OutputGenerator.beginFeature(self, interface, emit) OutputGenerator.beginFeature(self, interface, emit)
self.OldVersion = (self.featureName in ['GL_VERSION_1_0', 'GL_VERSION_1_1', 'GL_VERSION_1_2', 'GL_ARB_imaging', 'GL_ARB_multitexture', 'GL_ARB_texture_compression']) self.OldVersion = self.featureName in [
"GL_VERSION_1_0",
"GL_VERSION_1_1",
"GL_VERSION_1_2",
"GL_ARB_imaging",
"GL_ARB_multitexture",
"GL_ARB_texture_compression",
]
def endFeature(self): def endFeature(self):
OutputGenerator.endFeature(self) OutputGenerator.endFeature(self)
def genType(self, typeinfo, name): def genType(self, typeinfo, name):
OutputGenerator.genType(self, typeinfo, name) OutputGenerator.genType(self, typeinfo, name)
def genEnum(self, enuminfo, name): def genEnum(self, enuminfo, name):
OutputGenerator.genEnum(self, enuminfo, name) OutputGenerator.genEnum(self, enuminfo, name)
def genCmd(self, cmd, name): def genCmd(self, cmd, name):
OutputGenerator.genCmd(self, cmd, name) OutputGenerator.genCmd(self, cmd, name)
@ -382,90 +457,85 @@ class ShimOutputGenerator(OutputGenerator):
return return
# for GL functions which are in the ABI, generate a shim which calls the function via GetProcAddress # for GL functions which are in the ABI, generate a shim which calls the function via GetProcAddress
rettype=ParseCmdRettype(cmd) rettype = ParseCmdRettype(cmd)
self.outFile.write("%s %s("%(rettype, name)) self.outFile.write("%s %s(" % (rettype, name))
plist=ParseCmdParams(cmd) plist = ParseCmdParams(cmd)
Comma="" Comma = ""
if len(plist): if len(plist):
for ptype, pname in plist: for ptype, pname in plist:
self.outFile.write("%s%s"%(Comma, ptype)) self.outFile.write("%s%s" % (Comma, ptype))
Comma=", " Comma = ", "
else: else:
self.outFile.write("void") self.outFile.write("void")
self.outFile.write(")\n{\n") self.outFile.write(")\n{\n")
self.outFile.write(' typedef %s (* PFN%sPROC)(' % (rettype, name.upper())) self.outFile.write(" typedef %s (* PFN%sPROC)(" % (rettype, name.upper()))
if len(plist): if len(plist):
Comma="" Comma = ""
for ptype, pname in plist: for ptype, pname in plist:
self.outFile.write("%s %s"%(Comma, ptype)) self.outFile.write("%s %s" % (Comma, ptype))
Comma=", " Comma = ", "
else: else:
self.outFile.write("void") self.outFile.write("void")
self.outFile.write(');\n') self.outFile.write(");\n")
if rettype.lower()=="void": if rettype.lower() == "void":
self.outFile.write(' RESOLVE(PFN%sPROC, "%s");\n'%(name.upper(), name)) self.outFile.write(' RESOLVE(PFN%sPROC, "%s");\n' % (name.upper(), name))
self.outFile.write(' RESOLVED_PROC(') self.outFile.write(" RESOLVED_PROC(")
else: else:
self.outFile.write(' RESOLVE_RET(PFN%sPROC, "%s", 0);\n'%(name.upper(), name)) self.outFile.write(
self.outFile.write(' return RESOLVED_PROC(') ' RESOLVE_RET(PFN%sPROC, "%s", 0);\n' % (name.upper(), name)
)
self.outFile.write(" return RESOLVED_PROC(")
Comma="" Comma = ""
for ptype, pname in plist: for ptype, pname in plist:
self.outFile.write("%s%s"%(Comma, pname)) self.outFile.write("%s%s" % (Comma, pname))
Comma=", " Comma = ", "
self.outFile.write(" );\n}\n\n") self.outFile.write(" );\n}\n\n")
def genHeaders(): def genHeaders():
outFile = open(outFilename,"w") outFile = open(outFilename, "w")
if preresolve: if preresolve:
gen = PreResolveOutputGenerator(errFile=errWarn, gen = PreResolveOutputGenerator(
warnFile=errWarn, errFile=errWarn, warnFile=errWarn, diagFile=diag
diagFile=diag) )
gen.outFile=outFile gen.outFile = outFile
reg.setGenerator(gen) reg.setGenerator(gen)
reg.apiGen(genOpts) reg.apiGen(genOpts)
if wrapper: if wrapper:
gen = WrapperOutputGenerator(errFile=errWarn, gen = WrapperOutputGenerator(errFile=errWarn, warnFile=errWarn, diagFile=diag)
warnFile=errWarn, gen.outFile = outFile
diagFile=diag)
gen.outFile=outFile
reg.setGenerator(gen) reg.setGenerator(gen)
reg.apiGen(genOpts) reg.apiGen(genOpts)
if shim: if shim:
gen = ShimOutputGenerator(errFile=errWarn, gen = ShimOutputGenerator(errFile=errWarn, warnFile=errWarn, diagFile=diag)
warnFile=errWarn, gen.outFile = outFile
diagFile=diag)
gen.outFile=outFile
reg.setGenerator(gen) reg.setGenerator(gen)
reg.apiGen(genOpts) reg.apiGen(genOpts)
if thunk: if thunk:
gen = ThunkOutputGenerator(errFile=errWarn, gen = ThunkOutputGenerator(errFile=errWarn, warnFile=errWarn, diagFile=diag)
warnFile=errWarn, gen.outFile = outFile
diagFile=diag)
gen.outFile=outFile
reg.setGenerator(gen) reg.setGenerator(gen)
reg.apiGen(genOpts) reg.apiGen(genOpts)
if thunkdefs: if thunkdefs:
gen = ThunkDefsOutputGenerator(errFile=errWarn, gen = ThunkDefsOutputGenerator(errFile=errWarn, warnFile=errWarn, diagFile=diag)
warnFile=errWarn, gen.outFile = outFile
diagFile=diag)
gen.outFile=outFile
reg.setGenerator(gen) reg.setGenerator(gen)
reg.apiGen(genOpts) reg.apiGen(genOpts)
outFile.close() outFile.close()
genHeaders() genHeaders()