glapi: Update gl_enum.py to generate enum tables for multiple APIs

This commit is contained in:
Kristian Høgsberg 2010-04-27 08:57:56 -04:00
parent 12c46b15d7
commit 9664f10023
2 changed files with 19 additions and 13 deletions

View file

@ -151,8 +151,10 @@ $(MESA_DIR)/sparc/glapi_sparc.S: gl_SPARC_asm.py $(COMMON)
######################################################################
$(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON)
$(PYTHON2) $(PYTHON_FLAGS) $< > $@
$(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON) $(ES_API)
$(PYTHON2) $(PYTHON_FLAGS) $< -f gl_API.xml \
-f $(MESA_DIR)/es/glapi/es1_API.xml \
-f $(MESA_DIR)/es/glapi/es2_API.xml > $@
$(MESA_DIR)/main/remap_helper.h: remap_helper.py $(COMMON)
$(PYTHON2) $(PYTHON_FLAGS) $< > $@

View file

@ -151,8 +151,10 @@ int _mesa_lookup_enum_by_name( const char *symbol )
return
def printBody(self, api):
self.process_enums( api )
def printBody(self, api_list):
self.enum_table = {}
for api in api_list:
self.process_enums( api )
keys = self.enum_table.keys()
keys.sort()
@ -209,16 +211,20 @@ int _mesa_lookup_enum_by_name( const char *symbol )
def process_enums(self, api):
self.enum_table = {}
for obj in api.enumIterateByName():
if obj.value not in self.enum_table:
self.enum_table[ obj.value ] = []
enum = self.enum_table[ obj.value ]
name = "GL_" + obj.name
priority = obj.priority()
self.enum_table[ obj.value ].append( [name, priority] )
already_in = False;
for n, p in enum:
if n == name:
already_in = True
if not already_in:
enum.append( [name, priority] )
def show_usage():
@ -226,18 +232,16 @@ def show_usage():
sys.exit(1)
if __name__ == '__main__':
file_name = "gl_API.xml"
try:
(args, trail) = getopt.getopt(sys.argv[1:], "f:")
except Exception,e:
show_usage()
api_list = []
for (arg,val) in args:
if arg == "-f":
file_name = val
api = gl_XML.parse_GL_API( file_name )
api = gl_XML.parse_GL_API( val )
api_list.append(api);
printer = PrintGlEnums()
printer.Print( api )
printer.Print( api_list )