mirror of
https://github.com/X11Libre/xserver.git
synced 2026-10-28 02:21:08 +00:00
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:
parent
51b140b4ad
commit
c3b028aee8
1 changed files with 275 additions and 205 deletions
|
|
@ -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()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue