diff options
| -rw-r--r-- | src/mesa/glapi/Makefile | 8 | ||||
| -rw-r--r-- | src/mesa/glapi/glX_proto_send.py | 100 | ||||
| -rw-r--r-- | src/mesa/glapi/glX_proto_size.py | 169 | 
3 files changed, 173 insertions, 104 deletions
diff --git a/src/mesa/glapi/Makefile b/src/mesa/glapi/Makefile index 624d0d9326..35d8951c2d 100644 --- a/src/mesa/glapi/Makefile +++ b/src/mesa/glapi/Makefile @@ -56,11 +56,11 @@ glapitable.h: $(COMMON) gl_table.py  ../../glx/x11/indirect_init.c: $(COMMON_GLX) glX_proto_send.py  	$(PYTHON2) $(PYTHON_FLAGS) glX_proto_send.py -m init_c > ../../glx/x11/indirect_init.c -../../glx/x11/indirect_size.h: $(COMMON_GLX) glX_proto_send.py -	$(PYTHON2) $(PYTHON_FLAGS) glX_proto_send.py -m size_h > ../../glx/x11/indirect_size.h +../../glx/x11/indirect_size.h: $(COMMON_GLX) glX_proto_size.py +	$(PYTHON2) $(PYTHON_FLAGS) glX_proto_size.py -m size_h > ../../glx/x11/indirect_size.h -../../glx/x11/indirect_size.c: $(COMMON_GLX) glX_proto_send.py -	$(PYTHON2) $(PYTHON_FLAGS) glX_proto_send.py -m size_c > ../../glx/x11/indirect_size.c +../../glx/x11/indirect_size.c: $(COMMON_GLX) glX_proto_size.py +	$(PYTHON2) $(PYTHON_FLAGS) glX_proto_size.py -m size_c > ../../glx/x11/indirect_size.c  clean:  	rm -f *~ *.pyo diff --git a/src/mesa/glapi/glX_proto_send.py b/src/mesa/glapi/glX_proto_send.py index 922531d0c8..f1329d5760 100644 --- a/src/mesa/glapi/glX_proto_send.py +++ b/src/mesa/glapi/glX_proto_send.py @@ -767,102 +767,6 @@ class PrintGlxProtoInit_h(glX_XML.GlxProto):  		print 'extern HIDDEN %s __indirect_gl%s(%s);' % (f.fn_return_type, f.name, f.get_parameter_string()) -class PrintGlxSizeStubs(glX_XML.GlxProto): -	def __init__(self): -		glX_XML.GlxProto.__init__(self) -		self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2004", "IBM") -		self.aliases = [] -		self.glx_enum_sigs = {} - -	def printRealHeader(self): -		print '' -		print '#include <GL/gl.h>' -		print '#include "indirect_size.h"' -		 -		print '' -		glX_XML.printHaveAlias() -		print '' -		glX_XML.printPure() -		print '' -		glX_XML.printFastcall() -		print '' -		glX_XML.printVisibility( "INTERNAL", "internal" ) -		print '' -		print '' -		print '#ifdef HAVE_ALIAS' -		print '#  define ALIAS2(from,to) \\' -		print '    INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \\' -		print '        __attribute__ ((alias( # to )));' -		print '#  define ALIAS(from,to) ALIAS2( from, __gl ## to ## _size )' -		print '#else' -		print '#  define ALIAS(from,to) \\' -		print '    INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \\' -		print '    { return __gl ## to ## _size( e ); }' -		print '#endif' -		print '' -		print '' - -	def printRealFooter(self): -		for a in self.aliases: -			print a - -	def printFunction(self, f): -		if self.glx_enum_functions.has_key(f.name): -			ef = self.glx_enum_functions[f.name] - -			sig = ef.signature(); -			if self.glx_enum_sigs.has_key(sig): -				n = self.glx_enum_sigs[sig]; -				a = 'ALIAS( %s, %s )' % (f.name, n) -				self.aliases.append(a) -			else: -				ef.Print( f.name ) -				self.glx_enum_sigs[sig] = f.name; - - -				 -class PrintGlxSizeStubs_h(glX_XML.GlxProto): -	def __init__(self): -		glX_XML.GlxProto.__init__(self) -		self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2004", "IBM") -		self.aliases = [] -		self.glx_enum_sigs = {} - -	def printRealHeader(self): -		print """ -/** - * \\file - * Prototypes for functions used to determine the number of data elements in - * various GLX protocol messages. - * - * \\author Ian Romanick <idr@us.ibm.com> - */ - -#if !defined( _GLXSIZE_H_ ) -#  define _GLXSIZE_H_ - -""" -		glX_XML.printPure(); -		print '' -		glX_XML.printFastcall(); -		print '' -		glX_XML.printVisibility( "INTERNAL", "internal" ); -		print '' - -	def printRealFooter(self): -		print '' -		print "#  undef INTERNAL" -		print "#  undef PURE" -		print "#  undef FASTCALL" -		print "#endif /* !defined( _GLXSIZE_H_ ) */" - - -	def printFunction(self, f): -		if self.glx_enum_functions.has_key(f.name): -			ef = self.glx_enum_functions[f.name] -			print 'extern INTERNAL PURE FASTCALL GLint __gl%s_size(GLenum);' % (f.name) - -  def show_usage():  	print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]  	sys.exit(1) @@ -889,10 +793,6 @@ if __name__ == '__main__':  		dh = PrintGlxProtoInit_c()  	elif mode == "init_h":  		dh = PrintGlxProtoInit_h() -	elif mode == "size_c": -		dh = PrintGlxSizeStubs() -	elif mode == "size_h": -		dh = PrintGlxSizeStubs_h()  	else:  		show_usage() diff --git a/src/mesa/glapi/glX_proto_size.py b/src/mesa/glapi/glX_proto_size.py new file mode 100644 index 0000000000..168a8c13a2 --- /dev/null +++ b/src/mesa/glapi/glX_proto_size.py @@ -0,0 +1,169 @@ +#!/usr/bin/env python + +# (C) Copyright IBM Corporation 2004, 2005 +# All Rights Reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# on the rights to use, copy, modify, merge, publish, distribute, sub +# license, and/or sell copies of the Software, and to permit persons to whom +# the Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.  IN NO EVENT SHALL +# IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. +# +# Authors: +#    Ian Romanick <idr@us.ibm.com> + +from xml.sax import saxutils +from xml.sax import make_parser +from xml.sax.handler import feature_namespaces + +import gl_XML +import glX_XML +import license +import sys, getopt, copy + + +class PrintGlxSizeStubs_c(glX_XML.GlxProto): +	def __init__(self): +		glX_XML.GlxProto.__init__(self) +		self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2004", "IBM") +		self.aliases = [] +		self.glx_enum_sigs = {} + +	def printRealHeader(self): +		print '' +		print '#include <GL/gl.h>' +		print '#include "indirect_size.h"' +		 +		print '' +		glX_XML.printHaveAlias() +		print '' +		glX_XML.printPure() +		print '' +		glX_XML.printFastcall() +		print '' +		glX_XML.printVisibility( "INTERNAL", "internal" ) +		print '' +		print '' +		print '#ifdef HAVE_ALIAS' +		print '#  define ALIAS2(from,to) \\' +		print '    INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \\' +		print '        __attribute__ ((alias( # to )));' +		print '#  define ALIAS(from,to) ALIAS2( from, __gl ## to ## _size )' +		print '#else' +		print '#  define ALIAS(from,to) \\' +		print '    INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \\' +		print '    { return __gl ## to ## _size( e ); }' +		print '#endif' +		print '' +		print '' + +	def printRealFooter(self): +		for a in self.aliases: +			print a + +	def printFunction(self, f): +		if self.glx_enum_functions.has_key(f.name): +			ef = self.glx_enum_functions[f.name] + +			sig = ef.signature(); +			if self.glx_enum_sigs.has_key(sig): +				n = self.glx_enum_sigs[sig]; +				a = 'ALIAS( %s, %s )' % (f.name, n) +				self.aliases.append(a) +			else: +				ef.Print( f.name ) +				self.glx_enum_sigs[sig] = f.name; + + +				 +class PrintGlxSizeStubs_h(glX_XML.GlxProto): +	def __init__(self): +		glX_XML.GlxProto.__init__(self) +		self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2004", "IBM") +		self.aliases = [] +		self.glx_enum_sigs = {} + +	def printRealHeader(self): +		print """ +/** + * \\file + * Prototypes for functions used to determine the number of data elements in + * various GLX protocol messages. + * + * \\author Ian Romanick <idr@us.ibm.com> + */ + +#if !defined( _GLXSIZE_H_ ) +#  define _GLXSIZE_H_ + +""" +		glX_XML.printPure(); +		print '' +		glX_XML.printFastcall(); +		print '' +		glX_XML.printVisibility( "INTERNAL", "internal" ); +		print '' + +	def printRealFooter(self): +		print '' +		print "#  undef INTERNAL" +		print "#  undef PURE" +		print "#  undef FASTCALL" +		print "#endif /* !defined( _GLXSIZE_H_ ) */" + + +	def printFunction(self, f): +		if self.glx_enum_functions.has_key(f.name): +			ef = self.glx_enum_functions[f.name] +			print 'extern INTERNAL PURE FASTCALL GLint __gl%s_size(GLenum);' % (f.name) + + +def show_usage(): +	print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0] +	sys.exit(1) + + +if __name__ == '__main__': +	file_name = "gl_API.xml" + +	try: +		(args, trail) = getopt.getopt(sys.argv[1:], "f:m:") +	except Exception,e: +		show_usage() + +	mode = "proto" +	for (arg,val) in args: +		if arg == "-f": +			file_name = val +		elif arg == "-m": +			mode = val + +	if mode == "size_c": +		dh = PrintGlxSizeStubs_c() +	elif mode == "size_h": +		dh = PrintGlxSizeStubs_h() +	else: +		show_usage() + +	parser = make_parser() +	parser.setFeature(feature_namespaces, 0) +	parser.setContentHandler(dh) + +	f = open(file_name) + +	dh.printHeader() +	parser.parse(f) +	dh.printFooter()  | 
