X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fglapi%2Fgl_procs.py;h=1ad683de5c708f5a6ebef275783fb0bffd095ff4;hb=dfb6c56ed85d7b11b6e7e9b0a5ec7eddb1162510;hp=e5f575211f224ea64265da2309887fb7c902c3ce;hpb=7867799c72c3420994389406c5f64263304b74d6;p=mesa.git diff --git a/src/mesa/glapi/gl_procs.py b/src/mesa/glapi/gl_procs.py index e5f575211f2..1ad683de5c7 100644 --- a/src/mesa/glapi/gl_procs.py +++ b/src/mesa/glapi/gl_procs.py @@ -1,6 +1,6 @@ -#!/usr/bin/python2 +#!/usr/bin/env python -# (C) Copyright IBM Corporation 2004 +# (C) Copyright IBM Corporation 2004, 2005 # All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a @@ -25,20 +25,16 @@ # Authors: # Ian Romanick -from xml.sax import saxutils -from xml.sax import make_parser -from xml.sax.handler import feature_namespaces - import license import gl_XML import sys, getopt -class PrintGlProcs(gl_XML.FilterGLAPISpecBase): - name = "gl_procs.py (from Mesa)" - +class PrintGlProcs(gl_XML.gl_print_base): def __init__(self, long_strings): + gl_XML.gl_print_base.__init__(self) + self.long_strings = long_strings - gl_XML.FilterGLAPISpecBase.__init__(self) + self.name = "gl_procs.py (from Mesa)" self.license = license.bsd_license_template % ( \ """Copyright (C) 1999-2001 Brian Paul All Rights Reserved. (C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM") @@ -50,15 +46,15 @@ class PrintGlProcs(gl_XML.FilterGLAPISpecBase): print ' */' print '' print 'typedef struct {' - print ' int Name_offset;' + print ' GLint Name_offset;' print '#ifdef NEED_FUNCTION_POINTER' - print ' void * Address;' + print ' _glapi_proc Address;' print '#endif' - print ' unsigned int Offset;' + print ' GLuint Offset;' print '} glprocs_table_t;' print '' print '#ifdef NEED_FUNCTION_POINTER' - print '# define NAME_FUNC_OFFSET(n,f,o) { n , (void *) f , o }' + print '# define NAME_FUNC_OFFSET(n,f,o) { n , (_glapi_proc) f , o }' print '#else' print '# define NAME_FUNC_OFFSET(n,f,o) { n , o }' print '#endif' @@ -70,37 +66,43 @@ class PrintGlProcs(gl_XML.FilterGLAPISpecBase): print '#undef NAME_FUNC_OFFSET' return - def printFunctionString(self, f): + def printFunctionString(self, name): if self.long_strings: - print ' "gl%s\\0"' % (f.name) + print ' "gl%s\\0"' % (name) else: print " 'g','l',", - for c in f.name: + for c in name: print "'%s'," % (c), print "'\\0'," - def printFunctionOffset(self, f, offset_of_name): - print ' NAME_FUNC_OFFSET( % 5u, gl%s, _gloffset_%s ),' % (offset_of_name, f.name, f.real_name) - - def printFunctions(self): + def printBody(self, api): print '' if self.long_strings: print 'static const char gl_string_table[] =' else: print 'static const char gl_string_table[] = {' - keys = self.functions.keys() - keys.sort() - for k in keys: - if k < 0: continue - self.printFunctionString(self.functions[k]) + base_offset = 0 + table = [] + for func in api.functionIterateByOffset(): + self.printFunctionString( func.name ) + table.append((base_offset, func.name, func.name)) + + # The length of the function's name, plus 2 for "gl", + # plus 1 for the NUL. + + base_offset += len(func.name) + 3 + + + for func in api.functionIterateByOffset(): + for n in func.entry_points: + if n != func.name: + self.printFunctionString( n ) + table.append((base_offset, n, func.name)) + base_offset += len(n) + 3 - keys.reverse() - for k in keys: - if k >= -1: continue - self.printFunctionString(self.functions[k]) if self.long_strings: print ' ;' @@ -110,29 +112,10 @@ class PrintGlProcs(gl_XML.FilterGLAPISpecBase): print '' print 'static const glprocs_table_t static_functions[] = {' - keys = self.functions.keys() - keys.sort() - base_offset = 0 - for k in keys: - if k < 0: continue - self.printFunctionOffset(self.functions[k], base_offset) - - # The length of the function's name, plus 2 for "gl", - # plus 1 for the NUL. - - base_offset += len(self.functions[k].name) + 3 - - keys.reverse() - for k in keys: - if k >= -1: continue - self.printFunctionOffset(self.functions[k], base_offset) - - # The length of the function's name, plus 2 for "gl", - # plus 1 for the NUL. - - base_offset += len(self.functions[k].name) + 3 + for (offset, disp_name, real_name) in table: + print ' NAME_FUNC_OFFSET( % 5u, gl%s, _gloffset_%s ),' % (offset, disp_name, real_name) - print ' NAME_FUNC_OFFSET( -1, NULL, -1 )' + print ' NAME_FUNC_OFFSET( -1, NULL, 0 )' print '};' return @@ -148,7 +131,7 @@ def show_usage(): if __name__ == '__main__': file_name = "gl_API.xml" - + try: (args, trail) = getopt.getopt(sys.argv[1:], "f:m:") except Exception,e: @@ -166,14 +149,7 @@ if __name__ == '__main__': else: show_usage() - dh = PrintGlProcs( long_string ) - - parser = make_parser() - parser.setFeature(feature_namespaces, 0) - parser.setContentHandler(dh) - - f = open(file_name) + api = gl_XML.parse_GL_API( file_name ) - dh.printHeader() - parser.parse(f) - dh.printFooter() + printer = PrintGlProcs( long_string ) + printer.Print( api )