3 # (C) Copyright IBM Corporation 2004, 2005
4 # (C) Copyright Apple Inc. 2011
7 # Permission is hereby granted, free of charge, to any person obtaining a
8 # copy of this software and associated documentation files (the "Software"),
9 # to deal in the Software without restriction, including without limitation
10 # on the rights to use, copy, modify, merge, publish, distribute, sub
11 # license, and/or sell copies of the Software, and to permit persons to whom
12 # the Software is furnished to do so, subject to the following conditions:
14 # The above copyright notice and this permission notice (including the next
15 # paragraph) shall be included in all copies or substantial portions of the
18 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 # FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
21 # IBM AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
27 # Jeremy Huddleston <jeremyhu@apple.com>
29 # Based on code ogiginally by:
30 # Ian Romanick <idr@us.ibm.com>
33 import gl_XML
, glX_XML
44 #include "glapitable.h"
45 #include "main/dispatch.h"
48 _glapi_create_table_from_handle(void *handle, const char *symbol_prefix) {
49 struct _glapi_table *disp = calloc(1, sizeof(struct _glapi_table));
63 snprintf(symboln, sizeof(symboln), "%%s%(entry_point)s", symbol_prefix);
64 SET_%(name)s(disp, dlsym(handle, symboln));
68 class PrintCode(gl_XML
.gl_print_base
):
71 gl_XML
.gl_print_base
.__init
__(self
)
73 self
.name
= "gl_gen_table.py (from Mesa)"
74 self
.license
= license
.bsd_license_template
% ( \
75 """Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
76 (C) Copyright IBM Corporation 2004, 2005
77 (C) Copyright Apple Inc 2011""", "BRIAN PAUL, IBM")
82 def get_stack_size(self
, f
):
84 for p
in f
.parameterIterator():
88 size
+= p
.get_stack_size()
93 def printRealHeader(self
):
98 def printRealFooter(self
):
103 def printBody(self
, api
):
104 for f
in api
.functionIterateByOffset():
105 for entry_point
in f
.entry_points
:
106 vars = { 'entry_point' : entry_point
,
109 print body_template
% vars
113 print "Usage: %s [-f input_file_name]" % sys
.argv
[0]
116 if __name__
== '__main__':
117 file_name
= "gl_API.xml"
120 (args
, trail
) = getopt
.getopt(sys
.argv
[1:], "m:f:")
124 for (arg
,val
) in args
:
128 printer
= PrintCode()
130 api
= gl_XML
.parse_GL_API(file_name
, glX_XML
.glx_item_factory())